如何使用模式替换字符串注册表达式

2024-10-01 09:40:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个地址列表:

addr = ['100 NORTH MAIN ROAD',
            '100 BROAD ROAD APT.',
            'SAROJINI DEVI ROAD',
            'BROAD AVENUE ROAD']

我需要在以下功能中执行替换工作:

^{pr2}$

通过在该函数之外定义一个模式并将其作为参数传递给subst

我需要这样的输出:

addr = ['100 NORTH MAIN RD',
            '100 BROAD RD APT.',
            'SAROJINI DEVI RD ',
            'BROAD AVENUE RD']

所有“道路”字符串都替换为“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行,in 文件“python”,第20行,main 文件“python”,第7行,在subst中

TypeError:“str”对象不能解释为整数


Tags: newreturnmainaddressaptrdpatternaddr
3条回答

不需要regex,只需使用replace

[x.replace('ROAD', 'RD') for x in addr]

如果只想将ROAD替换为一个单词,中间的no,请使用:

^{pr2}$

使用正则表达式。。在

import re
count = 0
for x in addr:
    addr[count] = re.sub('ROAD', 'RD', x)
    count = count + 1

addr    # just to print the result.

使用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

输出

^{pr2}$

相关问题 更多 >