替换Python中的空格和元字符
我有这样一个字符串:替换Python中的空格和元字符,python,regex,Python,Regex,我有这样一个字符串: str1 = "/path/happy (dog)" 出于某种目的,我希望它像: str2 = "/path/happy\ \(dog\)" 我试过使用re: str1 = "happy (dog)" tuple_1 = ('\s+','(',')') for i in tuple_1: match = re.search(r"("+i+")",str1) if match: str1 = re.sub(match.group(),"\\
str1 = "/path/happy (dog)"
出于某种目的,我希望它像:
str2 = "/path/happy\ \(dog\)"
我试过使用re:
str1 = "happy (dog)"
tuple_1 = ('\s+','(',')')
for i in tuple_1:
match = re.search(r"("+i+")",str1)
if match:
str1 = re.sub(match.group(),"\\"+match.group(),str1)
print str1
但它给出了错误:
sre_constants.error: unbalanced parenthesis
我知道我在这里遗漏了什么…您需要转义任何特殊字符,如括号:
tuple_1 = (r'\s+', r'\(', r'\)')
否则,它们将被解释为正则表达式字符。您需要转义任何特殊字符,如括号:
tuple_1 = (r'\s+', r'\(', r'\)')
否则,它们将被解释为正则表达式字符。当i为“(”时,生成的正则表达式将为“(()”。两个开括号和一个结束符。因此,错误消息为“不平衡括号”
必须对元组_1中的两个括号进行转义:
tuple_1 = (r'\s+', r'\(', r'\)')
当i为“(”时,生成的正则表达式将为“(()”。两个开括号和一个闭括号。因此会出现错误消息“不平衡括号”
必须对元组_1中的两个括号进行转义:
tuple_1 = (r'\s+', r'\(', r'\)')
即使您应用了其他答案(转义元组中的搜索词)中提到的更改(这是有效且重要的),您仍然会得到一个
Traceback (most recent call last):
File "<pyshell#4>", line 6, in <module>
str1 = re.sub(match.group(),"\\"+match.group(),str1)
error: unbalanced parenthesis
另一方面,我们可以只编译一次模式,然后记住它
所以
最后的代码是:
str1 = "/path/happy (dog)"
tuple_1 = (r'\s+', r'\(', r'\)')
for i in tuple_1:
pattern = re.compile(r"("+i+")")
match = pattern.search(str1)
if match:
str1 = re.sub(pattern,"\\"+match.group(),str1)
str1现在是
'/path/happy\\\\\\\(dog\\\)'
即使你应用了其他答案中提到的更改(转义元组中的搜索词),这是有效且重要的,你仍然会得到一个
Traceback (most recent call last):
File "<pyshell#4>", line 6, in <module>
str1 = re.sub(match.group(),"\\"+match.group(),str1)
error: unbalanced parenthesis
另一方面,我们可以只编译一次模式,然后记住它
所以
最后的代码是:
str1 = "/path/happy (dog)"
tuple_1 = (r'\s+', r'\(', r'\)')
for i in tuple_1:
pattern = re.compile(r"("+i+")")
match = pattern.search(str1)
if match:
str1 = re.sub(pattern,"\\"+match.group(),str1)
str1现在是
'/path/happy\\\\(dog\\)'
你必须在正则表达式中转义括号。你搜索过错误消息吗?你必须在正则表达式中转义括号。你搜索过错误消息吗?非常感谢Sam。它工作得很好。尽管输出是'/path/happy\\(dog\)“这是我真正想要的。非常感谢Sam。它工作得非常好。尽管输出是我真正想要的”/path/happy\\(dog\)”。