我想用不同的名称替换句子,但我不知道为什么这样做有效
text="hi, my name is angle enrico, how is everything going?"
s = text.replace(r'hi, my name is\s+','')
print(s)
我想输出“一切进行得如何?”,但是我得到的是“嗨,我叫安格里科,状况如何?” 有人知道如何解决吗?
答案 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!