当前位置: 首页 > 知识库问答 >
问题:

如何使用列表替换字符串的某些部分?

红鸿运
2023-03-14
namelist = ['John', 'Maria']
e_text = 'John is hunting, Maria is cooking'

我需要替换“john'和”maria'。我怎么能这么做呢?

我试过:

for name in namelist:
    if name in e_text:
        e_text.replace(name, 'replaced')

但它只适用于“john'”。结果是:“被取代的是打猎,玛丽亚是烹饪”。我如何替换这两个名字?

谢了。

共有2个答案

夏何平
2023-03-14

您可以对名称进行regex更改,然后对其进行 :

namelist = ['John', 'Maria']
pattern = r'\b(?:' + '|'.join(namelist) + r')\b'
e_text = 'John is hunting, Maria is cooking'
output = re.sub(pattern, 'replaced', e_text)
print(e_text + '\n' + output)

这将打印:

John is hunting, Maria is cooking
replaced is hunting, replaced is cooking
楚和悌
2023-03-14

python中,字符串是不可变的,所以替换不会修改字符串,只返回一个修改过的字符串。您应该重新分配字符串:

for name in namelist:
    e_text = e_text.replace(name, "replaced")

在e_text/code>检查中不需要 如果找不到它就已经什么都不做了。

 类似资料:
  • 问题内容: 如何用另一部分替换字符串的特定部分? 输入字符串: 如何用其他方式更改字符串中的全部? 我认为我需要一个循环,但是我不确定如何使用它。 问题答案: 或者更精确地回答您的问题:

  • 我正在寻找创建正则表达式的帮助,以便我可以用锚标签替换文本。文本来自SQL字段(VarChar(max)),格式如下: 在上面的文本中,我需要将1994年以后的所有章节替换为锚标签。例如,98、553、568和300都将被替换。下面的代码查找1994年的整个文本,例如c.98,但是我不确定如何替换该文本中的“98”。

  • 两行的一个例子是:([a,b,c],d)和([d,e],a)我想把这些行转换成([a,b,c],[d,e])和([d,e],[a,b,c]) dataframe的列名是“src”和“dst”。 我如何处理这个问题?

  • 问题内容: 我正在尝试替换文件列表中的部分文件扩展名。我希望能够遍历项目(文件)并删除扩展名。我不知道当re.sub作为第三个参数需要一个字符串时,如何适当地遍历列表中的项目。例如。re.sub(pattern,repl,string,count = 0,标志= 0) 这里出现的问题是re.sub需要一个字符串,而我希望它在字符串列表中循环。 感谢您的任何建议! 问题答案: 您可以使用列表推导来使

  • 我有一个值为-f.e.:。 我想替换这个字符: ,,,,,,,与那些: <代码>>、<代码>>、<代码>l、<代码>o、<代码>s、<代码>z、<代码>c、<代码>n。 这里我的意思是,如果解析器将找到f.e.:char(在第一个列表中是第二个)应该替换为在第二个列表中处于相同位置/位置的char,在本例中是:。 char应替换为char。 char应替换为char。 在我的例子中,要替换的字符列

  • 我有一个文本包含一些我想要标记的单词,要标记的单词包含在一个列表中。问题是其中一些单词是其他单词的子字符串,但我想从列表中标记最长的可识别字符串。 例如,如果我的文本是“foo和bar不同于foo bar。”我的列表包含“foo”、“bar”和“foo bar”,结果应该是“[tag]foo[/tag]和[tag]bar[/tag]不同于[tag]foo bar[/tag]。”

  • 问题内容: 给定以下字符串 这是所需的输出:( 每个长号,无论长度如何,都应替换为姓氏) 这里的问题是,可能有很多可变长度(最大长度可以<20)… 我尝试了 多种 方法,并采用了以下方法。 有没有办法有效地做到这一点..任何建议将是最欢迎的 问题答案: 首先删除多个下划线,然后进行替换。 这是一种方法:

  • 问题内容: 有没有更短的方法可以编写以下代码? 注意,我不需要替换那些确切的值。我只是在寻找一种将5条以上的线变成少于5条线的方法 问题答案: 看起来是使用循环的好机会: 如果您不介意括号,则更快的方法是: