用python中的某个单词替换单词列表
比如说,如果我有一个段落,我想找到并用一个特定的单词替换其中的特定单词 在定义单词列表之后,我尝试使用for循环来实现这一点 这是我的密码用python中的某个单词替换单词列表,python,Python,比如说,如果我有一个段落,我想找到并用一个特定的单词替换其中的特定单词 在定义单词列表之后,我尝试使用for循环来实现这一点 这是我的密码 script = """ In this sense, netting can represent , which gives Howie return on Zachary.""" ROE = ["In", "this"] #the word list I
script = """ In this sense, netting can represent , which gives Howie return on Zachary."""
ROE = ["In", "this"] #the word list I'm defining (the list of words I want it replaced)
for ROE in script:
script.replace(ROE, "ROE")
#desired output = ROE ROE sense, netting can represent , which gives Howie return on Zachary.
它实际上不起作用,有人能帮我修一下吗?您有几个问题:
脚本中的字符上循环
replace
的结果。这不是就地操作,因为字符串是不可变的ROE
变量replace()
对单词边界一无所知。您的代码将从内部
转换为ROEside
。如果您想做得更好,可以使用正则表达式并将单词包装在\b
边界中。正则表达式还允许您一次执行所有替换
import re
regex = re.compile(r'\b(?:' + '|'.join(re.escape(word) for word in ROE) + r')\b')
script = regex.sub('ROE', script)
这将创建一个正则表达式\b(?:In | This)\b
,该表达式与任一单词匹配
script = """ In this sense, netting can represent , which gives Howie return on Zachary."""
ROE = ["In", "this"] #the word list I'm defining (the list of words I want it replaced)
for word in ROE:
script = script.replace(word, "ROE")
print(script)
输出:
ROE ROE sense, netting can represent , which gives Howie return on Zachary.
i、 e.与所需的相同。Python中的字符串
str
数据类型是不可变的。这意味着,如果要更改字符串,基本上必须创建一个具有更改的新字符串,然后可以将结果分配给变量
当然,您可以将结果分配给原始字符串分配给的同一变量,该变量可能具有对旧字符串的最后一次引用,从而使其得到清理。但在很短的时间内,字符串总会有一个新的副本
例如:
s = 'Hello'
s += ' world!'
print(s)
这似乎增加了“世界!”使用'Hello'
将code>添加到现有的s
上,但它实际上只是创建了一个新字符串'Hello world!'
并将其分配给s
,替换旧的
在您的例子中,这解释了为什么不能对字符串调用.replace()
,并期望它发生变化。相反,该方法返回所需的新字符串,您可以将其分配给变量:
script = """ In this sense, netting can represent , which gives Howie return on Zachary."""
roe = ["In", "this"]
for word_to_replace in roe:
script = script.replace(word_to_replace, 'ROE')
(请注意,还有一些其他问题,但上述问题应该可以解决)我找到了一个相对简单的解决方案
stopwords=['In','this','to']
for i in stopwords:
n=a.replace(i,'ROE')
a=n
我得到了这个链接的帮助:使用
for ROE in…
您覆盖了ROE
@Barmar之前的内容,但使用该命令,我必须不断重复,我正在将所有单词更改为ROE(我想要的单词),我只是试图简化代码。谢谢你这能回答你的问题吗?在这个问题上,你想要这个答案,对此表示感谢!但我使用的是在线解释器,导入功能实际上不受支持。这就是为什么我试图寻找一个简单的代码,这是疯狂的。Python在没有标准库的情况下完全瘫痪了。我知道WW,但我没有太多地使用它,所以我不想去安装所有东西:))谢谢你的帮助。你确定他们不会自动导入一些常用库,如re
?你不能使用不同的解释器吗,比如ideone.com或repl.it?嗯,不太确定。我知道repl.it支持导入库,但我这段代码的主要目标是在代码完成我想要的一切后复制输出,我认为repl.it不允许我正确复制输出,或者smth///无论如何,我找到了一个解决方案,这很好!我对这个网站有点陌生,我能问一下,我是否应该在我发布的解决方案上按“已解决”,或者当发布问题的原始人给出答案时,它会自动将其视为已解决?我运行了代码,但它仍然不起作用:((但是谢谢你!不知道你运行了什么代码-我只是将答案中的代码复制并粘贴到一个Python文件中,添加了print(script)
结果是ROE-ROE-sense,netting可以表示,这给了豪伊对扎卡里的回报。
你还期望什么?是的,谢谢你的帮助。我只是太傻了,没有意识到我需要添加打印。很乐意帮忙-如果这回答了问题,请接受带有复选标记的答案,这样其他人就可以找到它了不要看问题来回答它
stopwords=['In','this','to']
for i in stopwords:
n=a.replace(i,'ROE')
a=n