从字符串中删除Python中两个特定字符之间包含的所有字符

时间:2018-01-20 15:05:39

标签: python regex

使用字符串中的两个特定字符之间包含所有字符的快速方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:\(.*?\)。在这里演示: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)

这个正则表达式(正则表达式)将在空格前面的括号中查找任何文本(没有换行符)

答案 1 :(得分:1)

您很可能会使用像

这样的正则表达式
\s*\([^()]*\)\s*

(见a demo on regex101.com) 该表达式删除了括号和周围空格中的所有内容

<小时/> 在Python中,这可能是:

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

<小时/> 但是,出于学习目的,您还可以使用内置方法:

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

后者的问题:它不考虑多次出现并且不会删除空格,但肯定会更快。

<小时/> 每次执行100k次,测量结果为:

0.578398942947 # regex solution
0.121736049652 # non-regex solution

答案 2 :(得分:0)

要删除中的所有文字,您可以使用\b中的findall()方法并使用re删除它们:

replace()