问题描述
我正在开发一个函数,该函数通过识别 LP
或 LLP
是否在字符串中的任何位置出现(以空格开头或不以空格开头)。如果是这种情况,我想将 "
或 LP
子字符串放入带引号的子字符串中,如下所示。
LLP
到目前为止,我得到了这个函数,它几乎完成了我想要的:
# input
'blabla "RANDOM COMPANY ONE "LLP blabla'
'blabla "RANDOM COMPANY TWO " LLP blabla'
'blabla "RANDOM COMPANY THREE " LP blabla'
'blabla "RANDOM COMPANY FOUR "LP blabla'
# output
'blabla "RANDOM COMPANY ONE LLP" blabla'
'blabla "RANDOM COMPANY TWO LLP" blabla'
'blabla "RANDOM COMPANY THREE LP" blabla'
'blabla "RANDOM COMPANY FOUR LP" blabla'
我不希望结果字符串中有 def fix_entity_broken_by_quotes(text):
match = r'"\s*(LL?P)'
replace = r'" \1 "'
return ' '.join(re.sub(match,replace,text).split())
# run
>>> fix_entity_broken_by_quotes('blabla "RANDOM COMPANY ONE" LLP blabla')
Out[1]: 'blabla "RANDOM COMPANY ONE" LLP " blabla'
之后的 "
。
与往常一样,非常欢迎对我遗漏的任何提示或解释。
谢谢!
解决方法
您可以尝试使用 re.sub
:
inp = ['blabla "RANDOM COMPANY ONE "LLP blabla','blabla "RANDOM COMPANY TWO " LLP blabla','blabla "RANDOM COMPANY THREE " LP blabla','blabla "RANDOM COMPANY FOUR "LP blabla']
output = [re.sub(r'"[ ]?(LP|LLP)',r'\1"',x) for x in inp]
print(output)
打印:
['blabla "RANDOM COMPANY ONE LLP" blabla','blabla "RANDOM COMPANY TWO LLP" blabla','blabla "RANDOM COMPANY THREE LP" blabla','blabla "RANDOM COMPANY FOUR LP" blabla']
,
非常欢迎对我遗漏的内容提供提示或解释。
您在 "
replace
match = r'"\s*(LL?P)'
replace = r'" \1 "'
将 replace
更改为 r' \1 "'
应该会有所帮助。