从字符串中删除Python中两个特定字符之间包含的所有字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从字符串中删除Python中两个特定字符之间包含的所有字符相关的知识,希望对你有一定的参考价值。
Python中的两个特定字符之间包含所有字符的快速方法是什么?
答案
您可以使用此正则表达式:\(.*?\)
。在这里演示:https://regexr.com/3jgmd
然后你可以用这段代码删除零件:
import re
test_string = 'This is a string (here is a text to remove), and here is a text not to remove'
new_string = re.sub(r" \(.*?\)", "", test_string)
这个正则表达式(正则表达式)将在空格前面的括号中查找任何文本(没有换行符)
另一答案
你很可能会使用像这样的正则表达式
\s*\([^()]*\)\s*
为此(见a demo on regex101.com)。 该表达式删除括号和周围空格中的所有内容。
In
Python
this could be:
import re
test_string = 'This is a string (here is a text to remove), and here is a text not to remove'
new_string = re.sub(r'\s*\([^()]*\)\s*', '', test_string)
print(new_string)
# This is a string, and here is a text not to remove
However, for learning purposes, you could as well go with the builtin methods:
test_string = 'This is a string (here is a text to remove), and here is a text not to remove'
left = test_string.find('(')
right = test_string.find(')', left)
if left and right:
new_string = test_string[:left] + test_string[right+1:]
print(new_string)
# This is a string , and here is a text not to remove
后者的问题:它没有考虑多次出现并且不会删除空格,但肯定会更快。
Executing this a 100k times each, the measurements yield:
0.578398942947 # regex solution
0.121736049652 # non-regex solution
另一答案
要删除(和)中的所有文本,您可以使用findall()
中的re
方法并使用replace()
删除它们:
import re
test_string = 'This is a string (here is a text to remove), and here is a (second one) text not to remove'
remove = re.findall(r" \(.*?\)",test_string)
for r in remove:
test_string = test_string.replace(r,'')
print(test_string)
#result: This is a string , and here is a text not to remove
以上是关于从字符串中删除Python中两个特定字符之间包含的所有字符的主要内容,如果未能解决你的问题,请参考以下文章
Python - 在其他两个特定字符之间的字符串中提取文本?