如何使用reg.expression用模式替换字符串



我的地址列表为:

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

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

def subst(pattern, replace_str, string):

通过定义此功能之外的模式并将其作为参数传递给替换。

我需要一个输出:

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行,在 文件" Python",第20行,主要 文件" Python",第7行,

typeError:'str'对象不能解释为整数

不需要正则需要 replace

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

如果您只想替换ROAD作为单词,则不在中间,请使用:

[re.sub(r'bROADb', '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'bROADb'

将此参数传递到

def subst(pattern, replace_str, string):
    #susbstitute pattern and return it
    new=[re.sub(pattern,'RD',x) for x in string]
    return new

我们可以获取OP:(

尝试以下:

#!/bin/python3
import sys
import os
import io
import re

# Complete the function below.
def subst(pattern, replace_str, string):
    #susbstitute pattern and return it
    new_address=[pattern.sub(replace_str,st) for st in string]
    return new_address

def main():
    addr = ['100 NORTH MAIN ROAD',
            '100 BROAD ROAD APT.',
            'SAROJINI DEVI ROAD',
            'BROAD AVENUE ROAD']
            
    #Create pattern Implementation here 
    pattern=re.compile(r'bROAD')
    #Use subst function to replace 'ROAD' to 'RD.',Store as new_address
    new_address=subst(pattern,'RD.',addr)
    print(new_address)
    return new_address
'''For testing the code, no input is required'''
if __name__ == "__main__":
  main()
  
  
def bind(func):
    func.data = 9
    return func
@bind
def add(x, y):
    return x + y
print(add(3, 10))
print(add.data)

最新更新