python替换名称为不同的随机名称

时间:2018-09-07 07:19:25

标签: python replace

我想用不同的名称替换句子,但我不知道为什么这样做有效

text="hi, my name is angle enrico, how is everything going?"
s = text.replace(r'hi, my name is\s+','')
print(s)

我想输出“一切进行得如何?”,但是我得到的是“嗨,我叫安格里科,状况如何?” 有人知道如何解决吗?

4 个答案:

答案 0 :(得分:0)

您似乎正在尝试在非正则表达式上下文中使用正则表达式语法。您的代码当前正在执行的操作是搜索文字字符串hi, my name is\s+,该字符串显然不存在于您的输入字符串中。

您需要做的是编写一个正则表达式,它将捕获字符串的开头,然后将其传递到text.replace中。

答案 1 :(得分:0)

尝试使用:

s = text.replace('hi, my name is','')
print(' '.join(s.split()[2:]))

或者:

print(text.split(', ')[2])

两者均重现:

how is everything going?

答案 2 :(得分:0)

>>> text="hi, my name is angle enrico, how is everything going?"
>>> pre = text[text.index("hi, my name is ")+len("hi, my name is "):]
>>> pre
'angle enrico, how is everything going?'
>>> suf = pre[pre.index(", ")+len(", "):]
>>> suf
'how is everything going?'

答案 3 :(得分:0)

您需要使用正则表达式和re模块。

您要替换字符串中以“嗨,我的名字是”开头的部分,然后替换任何内容(.*),逗号和至少一个空格(,\s+)。

如果句子的末尾也可以包含逗号,则您需要采用尽可能小的“所有内容”,因此您必须以非贪婪的方式进行操作(.*?)。

因此,您可以这样做:

import re

text="hi, my name is angle enrico, how is everything going?"

s = re.sub(r'hi, my name is .*?,\s+', '', text)
print(s)
#how is everything going?

它在句子中还使用第二个逗号:

text="hi, my name is fred,   I'm fine, thanks!"
s = re.sub(r'hi, my name is .*?,\s+', '', text)
print(s)
#I'm fine, thanks!