繁体   English   中英

如果 python 中的括号内存在某些单词,则从括号中删除文本

[英]Remove text from brackets if certain word exist inside brackets in python

我有一个示例字符串

s='((Xyz_lk) some stuff (XYZ_l)) (vbc vb XyZ vc))'
s = '((Xyz_lk) some stuff (XYZ_l)) (XyZ vc))'
s = '((Xyz_lk) some stuff (XYZ_l)) (vc XyZ))'

如果 XyZ 出现在括号内开始、结束的任何位置,则删除该括号内的文本

output  ='((Xyz_lk) some stuff (XYZ_l)))'

我怎样才能在 Python 中以最简单的方式做到这一点? 也许通过使用正则表达式(我不擅长)?

你可以做

re.sub(r"\s*\((\w|\s)*(xyz|XyZ)(\w|\s)*\)", "", s)

结果

'((Xyz_lk) some stuff (XYZ_l)))'

正则表达式\s*\((\w|\s)*(xyz|XyZ)(\w|\s)*\)正在获取任何空白字符,后跟 ( 后跟任何空白字符零或多个或单词字符零或多于 XyZ 模式,然后是零个或多个空格字符或零个或多个单词字符,后跟 )

你可以简单地做到这一点。

1> 检查天气所需的字符串(XyZ)是否在给定的字符串中。

2> 获得位置后,找到围绕该字符串的括号的位置。

3> 跳过 output 字符串中的那部分字符串。

s='((Xyz_lk) some stuff (XYZ_l)) (vbc vb XyZ vc))'

if "XyZ" in s:
    index = s.index("XyZ")

i = j = index   

while s[i] != "(":
    i -= 1

while s[j] != ")":
    j += 1

output = (s[ :i] + s[j+1:])
print(output)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM