如何使用 reg.expression 将字符串替换为模式
How to replace a string with a pattern using reg.expression
我有一个地址列表:
addr = ['100 NORTH MAIN ROAD',
'100 BROAD ROAD APT.',
'SAROJINI DEVI ROAD',
'BROAD AVENUE ROAD']
我需要在以下函数中进行替换工作:
def subst(pattern, replace_str, string):
通过在此函数之外定义一个模式并将其作为参数传递给 subst。
我需要这样的输出:
addr = ['100 NORTH MAIN RD',
'100 BROAD RD APT.',
'SAROJINI DEVI RD ',
'BROAD AVENUE RD']
其中所有 'ROAD' 字符串都替换为 'RD'
def subst(pattern, replace_str, string):
#susbstitute pattern and return it
new=[]
for x in string:
new.insert((re.sub(r'^(ROAD)','RD',x)),x)
return new
def main():
addr = ['100 NORTH MAIN ROAD',
'100 BROAD ROAD APT.',
'SAROJINI DEVI ROAD',
'BROAD AVENUE ROAD']
#Create pattern Implementation here
pattern=r'^(ROAD)'
print (pattern)
#Use subst function to replace 'ROAD' to 'RD.',Store as new_address
new_address=subst(pattern,'RD',addr)
return new_address
我已经这样做了,并且出现以下错误
回溯(最近调用最后):
文件 "python",第 23 行,位于
文件 "python",第 20 行,在 main 中
文件 "python",第 7 行,在 subst
中
类型错误:'str' 对象不能解释为整数
无需正则表达式,只需使用 replace
:
[x.replace('ROAD', 'RD') for x in addr]
如果只想把ROAD
替换成一个单词,中间没有,用:
[re.sub(r'\bROAD\b', 'RD', x) for x in addr]
使用re
import re
addr = ['100 NORTH MAIN ROAD',
'100 BROAD ROAD APT.',
'SAROJINI DEVI ROAD',
'BROAD AVENUE ROAD']
for i, v in enumerate(addr):
addr[i] = re.sub('ROAD', 'RD', v) #v.replace("ROAD", "RD")
print addr
输出:
['100 NORTH MAIN RD', '100 BRD RD APT.', 'SAROJINI DEVI RD', 'BRD AVENUE RD']
使用 RegEx..
import re
count = 0
for x in addr:
addr[count] = re.sub('ROAD', 'RD', x)
count = count + 1
addr # just to print the result.
我得到了答案,
pattern=r'\bROAD\b'
将此参数传递给
def subst(pattern, replace_str, string):
#susbstitute pattern and return it
new=[re.sub(pattern,'RD',x) for x in string]
return new
我们可以得到 op :)
我有一个地址列表:
addr = ['100 NORTH MAIN ROAD',
'100 BROAD ROAD APT.',
'SAROJINI DEVI ROAD',
'BROAD AVENUE ROAD']
我需要在以下函数中进行替换工作:
def subst(pattern, replace_str, string):
通过在此函数之外定义一个模式并将其作为参数传递给 subst。
我需要这样的输出:
addr = ['100 NORTH MAIN RD',
'100 BROAD RD APT.',
'SAROJINI DEVI RD ',
'BROAD AVENUE RD']
其中所有 'ROAD' 字符串都替换为 'RD'
def subst(pattern, replace_str, string):
#susbstitute pattern and return it
new=[]
for x in string:
new.insert((re.sub(r'^(ROAD)','RD',x)),x)
return new
def main():
addr = ['100 NORTH MAIN ROAD',
'100 BROAD ROAD APT.',
'SAROJINI DEVI ROAD',
'BROAD AVENUE ROAD']
#Create pattern Implementation here
pattern=r'^(ROAD)'
print (pattern)
#Use subst function to replace 'ROAD' to 'RD.',Store as new_address
new_address=subst(pattern,'RD',addr)
return new_address
我已经这样做了,并且出现以下错误
回溯(最近调用最后):
文件 "python",第 23 行,位于 文件 "python",第 20 行,在 main 中 文件 "python",第 7 行,在 subst
中类型错误:'str' 对象不能解释为整数
无需正则表达式,只需使用 replace
:
[x.replace('ROAD', 'RD') for x in addr]
如果只想把ROAD
替换成一个单词,中间没有,用:
[re.sub(r'\bROAD\b', 'RD', x) for x in addr]
使用re
import re
addr = ['100 NORTH MAIN ROAD',
'100 BROAD ROAD APT.',
'SAROJINI DEVI ROAD',
'BROAD AVENUE ROAD']
for i, v in enumerate(addr):
addr[i] = re.sub('ROAD', 'RD', v) #v.replace("ROAD", "RD")
print addr
输出:
['100 NORTH MAIN RD', '100 BRD RD APT.', 'SAROJINI DEVI RD', 'BRD AVENUE RD']
使用 RegEx..
import re
count = 0
for x in addr:
addr[count] = re.sub('ROAD', 'RD', x)
count = count + 1
addr # just to print the result.
我得到了答案,
pattern=r'\bROAD\b'
将此参数传递给
def subst(pattern, replace_str, string):
#susbstitute pattern and return it
new=[re.sub(pattern,'RD',x) for x in string]
return new
我们可以得到 op :)