从字符串中删除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 - 在其他两个特定字符之间的字符串中提取文本?

从包含 R 中特定字符的字符串向量中删除条目 [重复]

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何从 Python 中的一组字符串中删除特定的子字符串?

Python 抓取两个特定字符之间的子字符串

在python数据框中删除不包含列中特定字符串的多列的重复项