Python 字符串处理

6 投票
8 回答
1770 浏览
提问于 2025-04-16 16:45

我有一个字符串 s,里面有嵌套的括号:s = "AX(p>q)&E((-p)Ur)"

我想把所有括号之间的字符都去掉,然后把结果存到一个新的字符串里,像这样:new_string = AX&E

我试着这样做:

p = re.compile("\(.*?\)", re.DOTALL)
new_string = p.sub("", s)

结果是:AX&EUr)

有没有什么办法可以修正这个问题,而不是一个一个字符地去检查字符串呢?

8 个回答

4

在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够好,或者是我们对某些概念理解得不够透彻。比如,有人可能会问,为什么我的代码没有按照预期工作?这时候,我们就需要仔细检查代码,看看是不是哪里出错了。

有些常见的错误包括:拼写错误、漏掉了某些符号、或者是使用了不正确的变量名。解决这些问题的方法通常是仔细阅读代码,逐行检查,确保每个部分都正确无误。

另外,了解一些基本的编程概念也是非常重要的,比如变量、循环和条件判断。这些都是编程的基础,掌握了这些,你就能更好地理解代码是如何工作的。

总之,遇到问题时,不要着急,慢慢来,仔细检查,理解每一行代码的意思,这样才能找到解决办法。

>>> import re
>>> s = "AX(p>q)&E(qUr)"
>>> re.compile("""\([^\)]*\)""").sub('', s)
'AX&E'
5

你可以直接用字符串处理的方法,不需要用到正则表达式。

>>> s = "AX(p>q)&E(qUr)"
>>> [ i.split("(")[0] for i in s.split(")") ]
['AX', '&E', '']

我就不多说了,连接这些字符串的部分就交给你自己来完成吧。

6

另一个简单的方法是逐步去掉最里面的括号,直到没有括号为止:

p = re.compile("\([^()]*\)")
count = 1
while count:
    s, count = p.subn("", s)

可以参考的示例: http://ideone.com/WicDK

撰写回答