Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Replace 用Python替换句子中短语的最快方法?_Replace - Fatal编程技术网

Replace 用Python替换句子中短语的最快方法?

Replace 用Python替换句子中短语的最快方法?,replace,Replace,我有一个3800个名字的列表,我想从750K句中删除。 这些名称可以包含多个单词,例如“白色条纹”。 有些名字也可能看起来像大名的子集,例如:“Ame”可能是一个名字,“amele”可能是另一个名字。 这就是我当前的实现: def find_整词(w): 返回re.compile(r'\b({0})\b'.format(w),flags=re.IGNORECASE.search 姓名(小写)=[‘白条纹’、‘披头士’、‘杀手’、‘ame’、‘阿米莉’]#3800多个姓名 def条带名称(句子:s

我有一个3800个名字的列表,我想从750K句中删除。 这些名称可以包含多个单词,例如“白色条纹”。 有些名字也可能看起来像大名的子集,例如:“Ame”可能是一个名字,“amele”可能是另一个名字。 这就是我当前的实现:

def find_整词(w):
返回re.compile(r'\b({0})\b'.format(w),flags=re.IGNORECASE.search
姓名(小写)=[‘白条纹’、‘披头士’、‘杀手’、‘ame’、‘阿米莉’]#3800多个姓名
def条带名称(句子:str):
token=句子。lower()
has_name=False
匹配项=[]
对于名称为小写的名称:
匹配=查找整个单词(名称)(标记)
如果匹配:
匹配。追加(匹配)
def get_匹配(匹配):
返回匹配。组(1)
匹配的字符串=列表(映射(获取匹配,匹配))
匹配的字符串。排序(key=len,reverse=True)
对于匹配的\u字符串中的匹配的\u字符串:
在开始、结束时以及当它们出现在文本中间时(带空白区域)

token=re.sub(rf)(?我以前的解决方案是过度杀戮。 我真正需要做的就是使用单词boundary
\b
,如中所述

用法示例:

重新导入
name_joined=“|”。join(name_小写)
names\u total\u words\u filter\u expression=re.compile(rf“\b({names\u joined})\b”,flags=re.IGNORECASE)
def条带名称(文本:str):
返回re.sub(名称、单词、过滤器、表达式、文本).strip()
现在需要几分钟而不是几个小时