Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 - Fatal编程技术网

这种替换不起作用的任何原因-python

这种替换不起作用的任何原因-python,python,Python,我试图在找到Google时插入“\n” Google(12,AB12,XYZ,A2) 注意:Google内部的参数是动态的 我所尝试的: Str=re.sub(r"Google(.*)",r"Google(.*)\n",str) 目前,我得到的是: Google(.*) followed by newline 我想要的是: Google(12,AB12,XYZ,A2) followed by newline 替换不是正则表达式,而是一种不同的模式,您可以在其中使用原始匹配的一部分,例如

我试图在找到Google时插入“\n”

Google(12,AB12,XYZ,A2)
注意:Google内部的参数是动态的

我所尝试的:

Str=re.sub(r"Google(.*)",r"Google(.*)\n",str)
目前,我得到的是:

Google(.*) followed by newline
我想要的是:

Google(12,AB12,XYZ,A2) followed by newline 

替换不是正则表达式,而是一种不同的模式,您可以在其中使用原始匹配的一部分,例如:

re.sub(r"Google(.*)", r"\g<0>\n")

这里的
*?
是»lazy«,因此它将尽可能多地匹配,以使正则表达式的其余部分也匹配,在这种情况下,匹配到第一个右括号(而不是最后一个,就像贪婪匹配一样)。

替换不是正则表达式,而是一种不同的模式,可以使用原始匹配的一部分,例如:

re.sub(r"Google(.*)", r"\g<0>\n")

这里的
*?
是»lazy«,因此它将尽可能多地匹配,以使正则表达式的其余部分也匹配,在这种情况下,匹配到第一个右括号(而不是最后一个,就像贪婪匹配一样)。

使用反向引用捕获匹配的字符串:

import re
str = 'Google(1)Google(2)'
str = re.sub(r'Google\(.*?\)',r'\g<0>\n', str)
print(str);

使用反向引用捕获匹配的字符串:

import re
str = 'Google(1)Google(2)'
str = re.sub(r'Google\(.*?\)',r'\g<0>\n', str)
print(str);
这样行吗

google=“谷歌(12,AB12,XYZ,A2)”
googleWithNewLine=“{0}\n”。格式(谷歌)
打印(googleWithNewLine)

这行吗

google=“谷歌(12,AB12,XYZ,A2)”
googleWithNewLine=“{0}\n”。格式(谷歌)
打印(googleWithNewLine)


为什么不直接使用
string=string+“\n”
Sruthi我不想使用string,因为字符串参数是通用的。为什么不直接使用
string=string+“\n”
Sruthi我不想使用string,因为字符串参数是通用的。
\0
应该是
\1
。另外,
()
应该围绕整个模式来生成所显示的输出。
re.sub(r“Google(.*),r“\0\n”,“Google(12,AB12,XYZ,A2)”
在Python 3上为我提供了
\x00\n
。\g是对整个匹配的反向引用。在这种情况下,使用像r'Google(.*)这样的非贪婪匹配“如上所述。你能帮我把它复原吗?”?re.sub(r“Google(.*)\n”,r“\g”)这似乎不起作用
\0
应该是
\1
。另外,
()
应该围绕整个模式来生成所显示的输出。
re.sub(r“Google(.*),r“\0\n”,“Google(12,AB12,XYZ,A2)”
在Python 3上为我提供了
\x00\n
。\g是对整个匹配的反向引用。在这种情况下,使用像r'Google(.*)这样的非贪婪匹配“如上所述。你能帮我把它复原吗?”?re.sub(r“Google(.*)\n”,r“\g”)这似乎不起作用,我假设
str
不仅仅是
Google(12,AB12,XYZ,A2)
,而是一个混合内容的文本。我也不确定,但从来没有人提到它是一个复杂的对象,而不是字符串本身。是的,这是一篇内容混杂的文章。乔伊的回答很有帮助。感谢您提供的信息,我想
str
不仅仅是
Google(12,AB12,XYZ,A2)
而是一个混合内容的文本。我也不确定,但从来没有人提到它是一个复杂的对象,而不是字符串本身。是的,这是一篇内容混杂的文章。乔伊的回答很有帮助。谢谢你提供的信息,乔伊,谢谢你,这对我有用。知道我错在哪里了。嗨@Perl,如果你发现这个答案解决了你的问题,我们鼓励你按下左边的绿色复选标记。肖恩·弗朗西斯·巴拉斯谢谢你的建议。但蜱虫变绿至少需要5分钟。所以我们在等待一个字符串中出现的两个这样的子字符串不被替换。我的意思是全球替代没有发生。我必须为此添加其他内容吗?@Perl,您的
*
非常贪婪,实际上将从
Google
匹配到字符串的最末端。我加了几句话。乔伊,谢谢。这对我来说很有效。知道我错在哪里了。嗨@Perl,如果你发现这个答案解决了你的问题,我们鼓励你按下左边的绿色复选标记。肖恩·弗朗西斯·巴拉斯谢谢你的建议。但蜱虫变绿至少需要5分钟。所以我们在等待一个字符串中出现的两个这样的子字符串不被替换。我的意思是全球替代没有发生。我必须为此添加其他内容吗?@Perl,您的
*
非常贪婪,实际上将从
Google
匹配到字符串的最末端。我补充了一些意见。