在Python中从字符串中删除括号和括号

时间:2015-06-12 04:15:50

标签: python regex string

我有一个像这样的字符串

<system.web>
    <sessionState mode="Off" />
    <authentication mode="None" />
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
</system.web>
<system.webServer>
    <modules>
      <remove name="FormsAuthentication" />
      <remove name="PassportAuthentication" />
      <remove name="Profile" />
      <remove name="AnonymousIdentification" />
      <remove name="WindowsAuthentication" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

如何删除括号和括号中的所有内容?像这样:

string =&#39; LVPVPITNATLDQITGK&#39;

2 个答案:

答案 0 :(得分:1)

正则表达式非常适合这些任务,幸运的是python标准库提供了对正则表达式的支持

>>> re.sub(r"[\(\[].*?[\)\]]", "", st)
'LVPVPITNATLDQITGK'

上面的模式用空字符串替换括号或括号内的任何内容。

注意正则表达式模式难以变得强大,并且很容易脱离和破坏特殊模式,例如

'LVPV(filler]PITN[notneeded)ATLDQITGK[0;0;0;0;0;6;2;0;0;5;0]'

因此,您需要确定输入数据及其预期输出

然而,你可以在没有正则表达式的情况下做到这一点

>>> import string
>>> ''.join(st.translate(string.maketrans("()[]"," "*4)).split(' ')[::2])
'LVPVPITNATLDQITGK'

答案 1 :(得分:1)

我建议你使用交替操作符。

>>> string = 'LVPV(filler)PITN(notneeded)ATLDQITGK[0;0;0;0;0;6;2;0;0;5;0]'
>>> re.sub(r"\([^()]*\)|\[[^\[\]]*\]", "", string)
'LVPVPITNATLDQITGK'
>>> st = 'LVPV(filler]PITN[notneeded)ATLDQITGK[0;0;0;0;0;6;2;0;0;5;0]'
>>> re.sub(r"\([^()]*\)|\[[^\[\]]*\]", "", st)
'LVPVATLDQITGK'