Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不替换其他字母的情况下替换某个字母?_Python_Regex - Fatal编程技术网

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))