I have a list of street_names
['SH-701', 'SH-67', ' ABC', 'Dharampur Road', 'Kailash Road', 'Tithal Road', 'SH-6', 'Halar Road', 'SH-183', 'Ramji Tekra Road', 'Mahatma Gandhi Road', 'Bandar Road', 'M G Road', 'M Road', 'Station Road', 'Azad Chowk', 'Golden Quadrilateral', 'Service Road', 'NH-48', 'NH-8', 'Baldev Street', 'Stadium Road', 'Civil Road', 'Rotatry Circle', 'Auranga River Major Bridge', 'Police Headquarters Road', 'Ramroti Chowk', ' dalaram st', 'Maa Sharda Path', 'Tower Road', 'Pranami Street', 'Abrama Road', 'Atul Road', 'Gali No 7', 'Javahar Dhakka Road', 'Railway Yard Road', 'Azad Road', 'Shivraj Park Road', 'Vajifdar Street', 'Tithal Crass Lane', 'Desai Jagdishbhai Marg', 'Approach Road', 'Nana Parsiwad Road', 'Kosamba Road', 'Desaivad Road', 'NCB Road', 'Juna Kosamba Road', 'Mota Taiwad Road', 'Gachiwad Road', 'Dadiya Faliya Road', 'Valsad Callege Road', 'B Road', 'D Road', 'E Road', 'C Road', 'I Road', 'H Road', 'Kharia Road', 'Nanakwada Kharia Faliya Road', 'Nanakwada Road', 'Vinayak Road', 'Lal School Road', 'Nana Talwad Road', 'Sipaiwad Road', 'Malaviyaji Road', 'Agyari Street', 'Parsiwad Road', 'Disepensary Road', 'Moti Mehtwad Road', 'Ghandhi Chowk', 'Desai Street', 'Tandel Street', 'Divadandi Road', 'Mullawadi Road', 'Ramwadi Road', 'Geeta Sadan Road', 'Shahid Road', 'Satyam Road', 'Street Number 1', 'Ambelal Patel Marg', 'Mogravadi Road', 'Valsad Station Road', 'Thakorbhai Park Society Road', 'Jujwa Sugar Road', 'Tapawad Road', 'Jujwa Marala Road', 'IP Gandhi School Road', 'Tadkeshwar Road', 'Kapadia Chawl Bechar Road', 'Valsad Godi Road', 'Bechar Road', 'Railway Colony Road', 'Control Office Road', 'A Road', 'F Road', 'Devang Gandhi', 'Desai Faliya Halar Road', 'Suraj Srushti Halar Road', 'Patel Street', 'Krishna Park Road', 'White House Lane', 'Abrama Bridge', 'Leela Park Society Road', 'Wanki River Bridge Road']
I want to use SelectLayerByAttribute for multiple fields where it will iterate select layer by attribute function by looping through different street_names values for multiple fields each time and will provide me the required features.
I am using this code:
for item in street_names:
query = '"' + "ST_NAME1 = '" + item + "' Or Remark1 = '" + item + "' Or ST_NAME2 = '" + item + "' Or Remark2 = '" + item + "' Or ST_NAME3 = '" + item + "' Or Remark3 = '" + item + "' Or ST_NAME4 = '" + item + "' Or Remark4 = '" + item + "' Or ST_NAME5 = '" + item + "' Or Remark5 = '" + item + "' Or ST_NAME6 = '" + item + "' Or Remark6 = '" + item + "' Or ST_NAME7 = '" + item + "' Or Remark7 = '" + item + "' Or ST_NAME8 = '" + item + "' Or Remark8 = '" + item + "' Or ST_NAME9 = '" + item + "' Or Remark9 = '" + item + "'" + '"'
in_data = arcpy.management.SelectLayerByAttribute(self.street, "ADD_TO_SELECTION", query , "NON_INVERT")
But it is throwing this error:
return lambda *args: val(*gp_fixargs(args, True)) arcgisscripting.ExecuteError: ERROR 000358: Invalid expression Failed to execute (SelectLayerByAttribute).
I am using ArcGIS Pro 2.7 and I need to perform this using ArcPy package in a Python script.
str.format()' with a triple-quote string. If you use
'{item}'` as your placeholder, you can.format(item=item)
. You might even want to explore usingstr.join()
to assemble your terms.