我试图删除括号和这些括号中的文本,以及连字符。一些字符串示例如下所示:
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
我希望结果是:
example = 'Year 1.2 Q4.1'
example2 = 'Year 2-7 Q4.8'
如何删除括号和特殊字符中或后面的文本?我只能找到str.strip()
方法。我是Python新手,所以任何反馈都是非常感谢的!
发布于 2017-12-27 19:41:58
您可以使用下面的regex获得所需的结果:
"\(.*\)|\s-\s.*"
# ^ ^ Pattern 2: everything followed by space, '-' hyphen, space
# ^ Pattern 1: everything within brackets (....)
样本运行:
>>> 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可以是字符串或函数;如果是字符串,则会处理其中的任何反斜杠转义。
发布于 2017-12-27 20:09:32
我们可以使用一个*和一个丢弃变量来完成这个任务。
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)
发布于 2017-12-28 14:21:18
您可以尝试这样的操作,在获取结果之后,您将只需要少量的数据清理就可以将其作为您想要的输出:
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)
https://stackoverflow.com/questions/47997659
复制相似问题