2 回答

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以讓“正常”拆分來劃分行
>>> s = """\
... FACILITIES \ PARK
... ROADS \ GRASS/TURF BLVD MAINTENANCE
... ROADS \ SIDEWALKS \ REPLACEMENT
... FACILITIES \ PARKING - MAIN ST
... RECREATION \ BANDSHELL \ PROPERTY \ BUILDING-GENERAL
... FACILITIES \ FIREHALL \ PLUMBING
... FACILITIES
... """
>>> for row in s.splitlines():
... print(row.split(" \\ "))
...
['FACILITIES', 'PARK']
['ROADS', 'GRASS/TURF BLVD MAINTENANCE']
['ROADS', 'SIDEWALKS', 'REPLACEMENT']
['FACILITIES', 'PARKING - MAIN ST']
['RECREATION', 'BANDSHELL', 'PROPERTY', 'BUILDING-GENERAL']
['FACILITIES', 'FIREHALL', 'PLUMBING']
['FACILITIES']
然后您可以迭代返回的列表,設(shè)置每個(gè)值
max_col_length = 10 # to be updated by author
for row in s.splitlines():
for index, atom in enumerate(row.split(" \\ "), 1): # count from 1
mbo = "create a new row" # not shown by author
mbo.setValue("WOEQ{}".format(index), atom[:max_col_length])
"INSERT row if processing rows individually"
"INSERT all rows if able to upload them all at the same time"
如果您需要始終在列表中提供至少 4 個(gè)(或 N 個(gè))成員,您可以使用itertools.repeat填寫剩余值
>>> import itertools
>>> mylist = ['RECREATION', 'BANDSHELL', 'PROPERTY']
>>> mylist.extend(list(itertools.repeat(None, 4 - len(mylist))))
>>> print(mylist)
['RECREATION', 'BANDSHELL', 'PROPERTY', None]

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是我最終使用的腳本(它是 @ti7 答案的變體)。
在新的層次結(jié)構(gòu)路徑少于四個(gè)級(jí)別的情況下,腳本會(huì)將現(xiàn)有值清空。
parts = s.split(r' \ ')
for i, part in enumerate(parts, 1):
mbo.setValue(col_prefix + str(i), part)
for i in range(len(parts)+1, 5):
mbo.setValueNull(col_prefix + str(i))
添加回答
舉報(bào)