正则表达式将一个单词放入带引号的子字符串中

问题描述

我正在开发一个函数,该函数通过识别 LPLLP 是否在字符串中的任何位置出现(以空格开头或不以空格开头)。如果是这种情况,我想将 "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 "' 应该会有所帮助。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...