0

我有一个包含 600k+ 字符串标签记录的文件,我正在尝试使用更新光标进行编辑,同时使用字符串模块和 fnmatch 来查找要编辑的模式。使用 fnmatch 的部分成功打印了匹配的记录,但没有更改/解析出匹配的模式。

没有错误,记录也没有变化。我的语法缺少什么?

(另外 - 附带问题,最后一个打印第 4 行语句仅打印文件的第一条记录。)

结果样本与原文没有变化 1000STR92SE 8000STR37NW 7000STR35SW 8000STR44 1000STR88SE 1000STR74SE

但结果需要是 92SE 37NW 35SW 44 88SE 74SE

def newlabel():
#Global Conversions - works on editing the string
    with arcpy.da.UpdateCursor(mvum_fc, newfields) as uc:
        for row in uc:
            if row[1] == None or row[1].startswith('0'):
                row[4] = '{}'.format(row[4].lstrip(ascii_letters).replace('_', "-").lstrip('0').replace(' ', '-'))

            if row[1] == None or row[1].startswith('-'):
                row[4] = '{}'.format(row[4].lstrip('-').lstrip('0'))
#Regional Conversions - lstrip and replace tried - not changing text.
            elif row[1].startswith('0118'):
                pattern = ('?000STR*')
                match = fnmatch.fnmatch(row[4], pattern)
                if match == True:
                    row[4] = '{}'.format(row[4].lstrip('?000STR'))
                    print(row[4])
            uc.updateRow(row)
            print(row[4])
4

2 回答 2

0

删除?要剥离的字符串中的 。它是用于模式匹配的通配符。

row[4] = '{}'.format(row[4].lstrip('000STR'))
于 2021-01-27T17:39:03.840 回答
0

我通过避免使用 .lstrip 解决了这个问题:

行[4] = '{}'.format(行[4].lstrip('000STR'))

并简单地将其替换为:

行[4] = '{}'.format(行[4][7:])

于 2021-01-27T18:52:04.733 回答