Python 如何在不替换其他字母的情况下替换某个字母?
如何在某个位置替换某个字母,而不替换另一个相同的字母?例如:Python 如何在不替换其他字母的情况下替换某个字母?,python,regex,Python,Regex,如何在某个位置替换某个字母,而不替换另一个相同的字母?例如: text = `"I need help. I need 5.4 dollar."` 我试过: a = re.compile('\D(\.)') print(a.sub('\n',text)) 然而,产出是有限的 "I need hel\n I need 5.4 dolla\n" 我怎样才能得到的输出 "I need help\n I need 5.4 dollar\n" 您可以使用: text=“我需要帮助。我需要5.4美元
text = `"I need help. I need 5.4 dollar."`
我试过:
a = re.compile('\D(\.)')
print(a.sub('\n',text))
然而,产出是有限的
"I need hel\n I need 5.4 dolla\n"
我怎样才能得到的输出
"I need help\n I need 5.4 dollar\n"
您可以使用:
text=“我需要帮助。我需要5.4美元。”
>>>re.sub(r’(?对于此特定示例,您可以使用regex元字符\b匹配单词的开头或结尾(单词边界)
编写有效的正则表达式首先要明确您真正需要的内容。在您的情况下,看起来您希望: 用换行符替换所有句点,除非句点是数字的一部分 更准确地说,定义句点是数字的一部分意味着什么:它很可能意味着它后面紧跟着一个数字,这样它就匹配了
5.4
,但也匹配了中的.4
,在中.4的平均分很低。
,但不是4。
在中,她总共只算了4。
用换行符替换所有句点,除非句点后面紧跟着一个数字
您的示例\D(\)
所匹配的是:“匹配不是数字的单个字符,后跟文字
”,这不是您想要替换的内容
新表达式\.(?!\d)
匹配“匹配文字
,但前提是后面没有数字。”它使用了一种称为负前瞻的方法,更多信息请参见这里的re.sub(r'(?)?
>>> text = "I need help. I need 5.4 dollar."
>>> re.sub(r'(?<=\D)\.', '\n', text)
'I need help\n I need 5.4 dollar\n'
import re
text = "I need help. I need 5.4 dollar."
a = re.compile('\b(\.)')
print(a.sub('\n',text))
import re
text = '"I have .5 dollar. I need 5.4 dollar. But they only gave me 3."'
expression = re.compile(r'\.(?!\d)')
print(expression.sub('\n', text))