我一直在尝试删除带有相关数字的下划线('_')。 这是我的文本文件中的第一行。
JP_001033692.1_551 N -1 NO 99.5425% 0.0022875
我想从“JP_001033692.1_551”中删除“_551”而不从后续列中删除其他项目。
预期的行将是:
JP_001033692.1 N -1 NO 99.5425% 0.0022875
这是我的代码:
fname = open(raw_input('Enter input filename: '),'r' )
outfile = open('decValues.txt','w')
for line in fname:
line = re.sub('[\(\)\{\}\'\'\,<>]','', line)
fields = line.rstrip("\n").split()
outfile.write('%s %s %s %s %1.4f\n' % (fields[0],fields[1],fields[2],fields[3],(float(fields[5]))))
谢谢你们的帮助。 凯什
答案 0 :(得分:0)
这是否符合您的要求?
re.sub("(?P<x>(_.*)?)_\w*","\g<x>",str)
答案 1 :(得分:0)
这应该做你想要的:
re.sub(r'^([^ ]*)(_[0-9]*)( +)', r'\1\3', line)
从Python repl测试:
>>> import re
>>> line = 'JP_001033692.1_551 N -1 NO 99.5425% 0.0022875'
>>> re.sub(r'^([^ ]*)(_[0-9]*)( +)', r'\1\3', line)
'JP_001033692.1 N -1 NO 99.5425% 0.0022875'
答案 2 :(得分:0)
应该这样做:
re.sub(r"(\.\d+)_\d+", r"\1", line)
答案 3 :(得分:0)
str.rpartition(sep)¶会在最后一次出现的sep上拆分字符串
s =“this_is_a_string”
split_s = s.rpartition('_')
split_s
('this_is_a','_','string')
split_s [0]
'this_is_a'