我有一个公司名称列表,用“' company'”替换。跨多行的列表。
cmp=re.compile(""" A | B |
C | D
""")
text='A is a great company, so is B'
cmp.sub('company',text)
但它不起作用。我该如何解决这个问题?
编辑:
上面给出的例子没有考虑公司名称中的空白。
company1=re.compile(r"""Berkshire Hathaway|Australia & New Zealand Bank
|Wells Fargo|AIG
|Ind & Comm Bank of China|BNP Paribas""")
company2=re.compile(r"""Berkshire Hathaway|Australia & New Zealand Bank
|Wells Fargo|AIG
|Ind & Comm Bank of China|BNP Paribas""",re.VERBOSE)
text='AIG is a great company, so is Berkshire Hathaway'
company1.sub('cmp',text)
>>> 'AIG is a great company, so is cmp'
company2.sub('cmp',text)
>>> 'cmp is a great company, so is Berkshire Hathaway'
答案 0 :(得分:3)
您可以将此视为一个详细模式的示例,该模式允许(并忽略)像换行符这样的空格:
import re
cmp = re.compile(r""" A | B |
C | D
""", re.VERBOSE)
text = 'A is a great company, so is B'
print(cmp.sub('company', text))
<强>输出强>
company is a great company, so is company
空间包含在公司名称中。 ......关于如何修复的任何想法 此?
我们需要做一些像名称中出现的空格字符的CGI转义。这是一种基于正则表达式的方法,不需要解码编码空间:
import re
companies = re.compile(re.sub(r"(?<=\S) (?=\S)", r"[ ]", """Berkshire Hathaway|Australia & New Zealand Bank
|Wells Fargo|AIG
|Ind & Comm Bank of China|BNP Paribas"""), re.VERBOSE)
text = 'AIG is a great company, so is Berkshire Hathaway'
print(companies.sub('cmp', text))
<强>输出强>
cmp is a great company, so is cmp