python中的简单递归字符串替换?
我试图用Python中的另一个字符串递归地替换一个字符串。我知道线程,但来自其他语言我很惊讶-真的那么难吗?有没有办法使用一个班轮做到这一点python中的简单递归字符串替换?,python,regex,string,Python,Regex,String,我试图用Python中的另一个字符串递归地替换一个字符串。我知道线程,但来自其他语言我很惊讶-真的那么难吗?有没有办法使用一个班轮做到这一点 astring="<li><a href="#Quick Start">Quick Start*</li></li> <li><a href="#Parsing a Document">Parsing a Document*</li></li> <ul&g
astring="<li><a href="#Quick Start">Quick Start*</li></li>
<li><a href="#Parsing a Document">Parsing a Document*</li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML*</li></li>
<li><a href="#Parsing XML">Parsing XML*</li></li>"
tweaked = re.sub(r"\*",r"</a>", astring)
astring=“”,astring)
我以为r
意味着递归,但在这里它似乎不这样做。简单的替换真的这么难吗
我尝试了string.replace
-但没有成功,我想可能是换行了吧?然后我尝试了string.translate
,它需要替换字符串中相同数量的字符,但在本例中不起作用,而且代码行太多。我试过很多版本,我做错了什么
也许我误解了?我以为这意味着“没有一场比赛,坚持到底”之类的东西?我想用替换*。astring
部分只是一个示例,而不是我试图替换的实际字符串,因为它太大了。(请原谅我的生疏)
请把这个问题投到遗忘的一票考虑到评论中的建议,这里有一个可能的解决方案:
string = """<li><a href="#Quick Start">Quick Start*</li></li>
<li><a href="#Parsing a Document">Parsing a Document*</li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML*</li></li>
<li><a href="#Parsing XML">Parsing XML*</li></li>"""
string = string.replace("*", "</a>")
print string
string=“””)
打印字符串
考虑到评论中的建议,这里有一个可能的解决方案:
string = """<li><a href="#Quick Start">Quick Start*</li></li>
<li><a href="#Parsing a Document">Parsing a Document*</li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML*</li></li>
<li><a href="#Parsing XML">Parsing XML*</li></li>"""
string = string.replace("*", "</a>")
print string
string=“””)
打印字符串
在Python中r''
和r''
表示原始字符串。在原始字符串中,不会执行反斜杠解释
以下几点似乎效果不错:
foo="""<li><a href="#Quick Start">Quick Start*</li></li>
<li><a href="#Parsing a Document">Parsing a Document*</li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML*</li></li>
<li><a href="#Parsing XML">Parsing XML*</li></li>"""
foo = foo.replace('*', '</a>')
foo=”“”)
在Python中r''
和r''
表示原始字符串。在原始字符串中,不进行反斜杠解释
以下几点似乎效果不错:
foo="""<li><a href="#Quick Start">Quick Start*</li></li>
<li><a href="#Parsing a Document">Parsing a Document*</li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML*</li></li>
<li><a href="#Parsing XML">Parsing XML*</li></li>"""
foo = foo.replace('*', '</a>')
foo=”“”)
有几件事需要注意:
该字符串不是有效的python语法。它是用单双引号定义的,但是里面有双引号。使用单引号定义字符串str='blah blah'
或使用三个引号str=“”blah blah”“”
str
是一个。最好不要覆盖内置项(尽管这是允许的)
r”“
定义“原始字符串”。看
re.sub()
会替换字符串中所有不重叠的匹配序列,这正是您想要的。在简单的情况下,应首选string.replace()
,例如mystring.replace('*','')
。看
鉴于上述几点,该代码:
import re
mystring = '''<li><a href="#Quick Start">Quick Start*</li></li>
<li><a href="#Parsing a Document">Parsing a Document*</li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML*</li></li>
<li><a href="#Parsing XML">Parsing XML*</li></li>'''
mynewstring = re.sub(r'\*', '</a>', mystring)
print(mynewstring)
重新导入
mystring=''',mystring)
打印(mynewstring)
将产生以下输出:
<li><a href="#Quick Start">Quick Start</a></li></li>
<li><a href="#Parsing a Document">Parsing a Document</a></li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML</a></li></li>
<li><a href="#Parsing XML">Parsing XML</a></li></li>
请注意,替换字符串
中的正斜杠不需要转义。但是,模式“*”
确实需要转义以使其成为有效的正则表达式。有几点需要注意:
该字符串不是有效的python语法。它是用单双引号定义的,但是里面有双引号。使用单引号定义字符串str='blah blah'
或使用三个引号str=“”blah blah”“”
str
是一个。最好不要覆盖内置项(尽管这是允许的)
r”“
定义“原始字符串”。看
re.sub()
会替换字符串中所有不重叠的匹配序列,这正是您想要的。在简单的情况下,应首选string.replace()
,例如mystring.replace('*','')
。看
鉴于上述几点,该代码:
import re
mystring = '''<li><a href="#Quick Start">Quick Start*</li></li>
<li><a href="#Parsing a Document">Parsing a Document*</li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML*</li></li>
<li><a href="#Parsing XML">Parsing XML*</li></li>'''
mynewstring = re.sub(r'\*', '</a>', mystring)
print(mynewstring)
重新导入
mystring=''',mystring)
打印(mynewstring)
将产生以下输出:
<li><a href="#Quick Start">Quick Start</a></li></li>
<li><a href="#Parsing a Document">Parsing a Document</a></li></li>
<ul>
<li><a href="#Parsing HTML">Parsing HTML</a></li></li>
<li><a href="#Parsing XML">Parsing XML</a></li></li>
请注意,替换字符串
中的正斜杠不需要转义。但是,模式“*”
确实需要转义以使其成为有效的正则表达式。是否要将所有星号符号替换为“”?我不知道它的哪一部分是“递归的”。这里“递归”这个词似乎没有任何意义。请您澄清一下您的问题好吗?顺便说一句,在Python中使用str
作为变量的名称不是一个好主意,因为它也是内置函数的名称。另一个问题是,str
在代码中的定义是否与上面的代码片段完全相同。如果是,则需要注意跨多行生成字符串文字,并转义其中的双引号。要同时解决这两个问题,只需使用“”(三重引号,有关详细信息,请参阅)。该字符串无效,因为它包含未替换的引号。请首先替换所有“inside by”“好的,是的,但是假设字符串在转义后包含它,这只是一个示例。我没想到,对不起!编辑以上,以澄清我自己。。。问题不在于字符串,而在于regex命令…谢谢各位。是否要将所有星号符号替换为“”?我不知道它的哪一部分是“递归的”。这里“递归”这个词似乎没有任何意义。请您澄清一下您的问题好吗?顺便说一句,在Python中使用str
作为变量的名称不是一个好主意,因为它也是内置函数的名称。另一个问题是,str
在代码中的定义是否与上面的代码片段完全相同。如果是,则需要注意跨多行生成字符串文字,并转义其中的双引号。要同时解决这两个问题,只需使用“”(三重引号,有关详细信息,请参阅)。该字符串无效,因为它包含未替换的引号。请首先替换所有“inside by”“好的,是的,但是假设字符串在转义后包含它,这只是一个示例。我没想到,对不起!编辑以上,以澄清我自己。。。问题不在于绳子,而在于绳子