首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Python字符串中删除括号内的文本?

如何从Python字符串中删除括号内的文本?
EN

Stack Overflow用户
提问于 2017-12-27 19:32:21
回答 4查看 3.3K关注 0票数 0

我试图删除括号和这些括号中的文本,以及连字符。一些字符串示例如下所示:

example = 'Year 1.2 Q4.1 (Section 1.5 Report (#222))'

example2 = 'Year 2-7 Q4.8 - Data markets and phases' ##there are two hyphens

我希望结果是:

代码语言:javascript
运行
复制
example = 'Year 1.2 Q4.1'  
example2 = 'Year 2-7 Q4.8'  

如何删除括号和特殊字符中或后面的文本?我只能找到str.strip()方法。我是Python新手,所以任何反馈都是非常感谢的!

EN

回答 4

Stack Overflow用户

发布于 2017-12-27 19:41:58

您可以使用下面的regex获得所需的结果:

代码语言:javascript
运行
复制
"\(.*\)|\s-\s.*"
#   ^     ^  Pattern 2: everything followed by space, '-' hyphen, space
#   ^   Pattern 1: everything within brackets (....)

样本运行:

代码语言:javascript
运行
复制
>>> import re
>>> my_regex = "\(.*\)|\s-\s.*"

>>> example = 'Year 1.2 Q4.1 (Section 1.5 Report (#222))'
>>> example2 = 'Year 2-7 Q4.8 - Data markets and phases'

>>> re.sub(my_regex, "", example)
'Year 1.2 Q4.1'
>>> re.sub(my_regex, "", example2)
'Year 2-7 Q4.8'

这里我使用的是re.sub(pattern, repl, string, ...),如文档所述:

返回通过替换repl替换字符串中最左边的不重叠模式出现的字符串所获得的字符串。如果找不到模式,则字符串将不受影响地返回。repl可以是字符串或函数;如果是字符串,则会处理其中的任何反斜杠转义。

票数 6
EN

Stack Overflow用户

发布于 2017-12-27 20:09:32

我们可以使用一个*和一个丢弃变量来完成这个任务。

代码语言:javascript
运行
复制
example = 'Year 1.2 Q4.1 (Section 1.5 Report (#222))'
display,*_ = example.split('(')
print(display)

example2 = 'Year 2-7 Q4.8 - Data markets and phases' ##there are two hyphens
part_1,part_2,*_ = example2.split('-')
display = part_1 + '-'+ part_2
print(display)
票数 1
EN

Stack Overflow用户

发布于 2017-12-28 14:21:18

您可以尝试这样的操作,在获取结果之后,您将只需要少量的数据清理就可以将其作为您想要的输出:

代码语言:javascript
运行
复制
import re
data=[]
pattern=r'\(.+\)|\s\-.+'
with open('file.txt','r') as f:
    for line in f:
        match=re.search(pattern,line)
        data.append(line.replace(match.group(),'').strip())

print(data)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47997659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档