Roh*_*har 0 python regex data-cleaning
我正在使用逗号作为分隔符的文件.但是,它有一个字段,地址,其中地址是x,y,z形式,这会导致问题,因为地址的每个部分都有一个新的列条目.地址紧跟成员_no一个1位数字,如2等.Col1(地址),Col2(1位数)
text = '52A, XYZ Street, ABC District, 2'
Run Code Online (Sandbox Code Playgroud)
我基本上想从地址字段中删除该数字之前的所有逗号.
输出应该是这样的
52A XYZ Street ABC District, 2'
Run Code Online (Sandbox Code Playgroud)
我试过了
re.sub(r',', ' ', text)
Run Code Online (Sandbox Code Playgroud)
但它正在取代所有逗号实例.
使用零宽度负向前瞻以确保要替换的子串(此处为逗号)最后不会跟随{space(s)}{digit}:
,(?!\s+\d$)
Run Code Online (Sandbox Code Playgroud)
例:
In [227]: text = '52A, XYZ Street, ABC District, 2'
In [228]: re.sub(',(?!\s+\d$)', '', text)
Out[228]: '52A XYZ Street ABC District, 2'
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您在,{space(s)}{digit}子字符串后面有更多逗号,并希望将它们全部保留,请利用负面的lookbehind来确保逗号前面没有{space}{digit<or>[A-Z]}:
(?<!\s[\dA-Z]),(?!\s+\d,?)
Run Code Online (Sandbox Code Playgroud)
例:
In [229]: text = '52A, XYZ Street, ABC District, 2, M, Brown'
In [230]: re.sub('(?<!\s[\dA-Z]),(?!\s+\d,?)', '', text)
Out[230]: '52A XYZ Street ABC District, 2, M, Brown'
In [231]: text = '52A, XYZ Street, ABC District, 2'
In [232]: re.sub('(?<!\s[\dA-Z]),(?!\s+\d,?)', '', text)
Out[232]: '52A XYZ Street ABC District, 2'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |