2011-03-11 2 views
1

그 뒤에 관련된 숫자와 함께 밑줄 ('_')을 제거하려고 시도했습니다. 이것은 내 텍스트 파일의 첫 번째 행입니다.밑줄 ('_')을 제거하는 방법 첫 번째 열에서만 앞의 숫자와 함께

JP_001033692.1_551 N -1 NO 99.5425% 0.0022875 

나는 다음 열에서 다른 항목을 제거하지 않고 "JP_001033692.1_551"에서 "_551"를 제거하고 싶습니다.

예상 행은 다음과 같습니다 도와위한

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])))) 

고마워 :

JP_001033692.1 N -1 NO 99.5425% 0.0022875 

여기 내 코드입니다. 케쉬

+0

소수점 이하의 숫자 뒤에 오는 밑줄을 모두 삭제 하시겠습니까? 그렇다면 적절한 소수점을 검색 할 수 있습니다. – John

+0

감사합니다. Bozhidar Batsov. 그것은 내 텍스트 파일의 모든 유형에 효과가있었습니다. 너는 나의 구원받은 날 뿐이다. 내 문제에 대한 해결책을 제공 한 모든 이에 게 감사드립니다. 고마워.좋은 일을 계속 지켜라. 건배, 케쉬. – user587646

+0

@ user587646 그의 대답이 효과가 있다면 대답으로 표시해야합니다. –

답변

0

을해야한다고 :

re.sub(r"(\.\d+)_\d+", r"\1", line) 
+0

이것은 저에게 적합하지 않습니다. 당신의 노력에 너무 감사드립니다. – user587646

+0

질문에 표시된 선과 함께 작동합니다. 나는 당신을 위해 일하지 않는 것이 확실하지 않습니다. –

+0

그것은 매력처럼 작동합니다, 그것은 오타였습니다! 고마워요! – user587646

0

원하는 것을 찾으십니까?

re.sub("(?P<x>(_.*)?)_\w*","\g<x>",str) 
0

이것은 당신이 원하는 일을해야 파이썬 REPL에서

re.sub(r'^([^ ]*)(_[0-9]*)(+)', r'\1\3', line) 

테스트 :

>>> 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' 
+0

고마워요.이 기능은이 기능에서만 작동합니다. 나는이 유형의 톤을 가지고있다. 밑줄 뒤에 오는 값은 0-9 사이입니다. 이것은 Nathan의 접근 방식으로 모든 것을 제거 했어야했지만 그렇지 않았습니다. 'r'과 r '\ 1 \ 3'은 무엇입니까? – user587646

+0

@ user587646 더 많은 회선 예제를 제공 할 수 있습니까? –

+1

r ""은 원시 문자열을 나타냅니다 - 정규 표현식에 유용합니다 –

0

str.rpartition을 (sep) ¶ se의 마지막 출현시 ​​문자열을 나눕니다. P

split_s "를 this_is_a_string"

S 개의 = s.rpartition ('_')

split_s

('this_is_a' '_', 'string')

split_s [0]

'this_is_a'

관련 문제