2014-07-24 3 views
0

데이터베이스 테이블을 '|'문자가있는 CSV 파일로 변환하고 있습니다. 구분 기호로 사용합니다.단어 사이에 앞뒤 공백을 제거하지 않습니다.

난 데이터베이스 테이블의 출력을 가지고 같은 : -

테이블 : -

|London   |  Jul 9 2014 1:21PM |john   | 
|New York  |  Jul 9 2014 1:21PM |peter  | 
|New Zeland  |  Jul 9 2014 1:21PM |Mr. Jones | 

내가 좋아하는 후행 공백을 제거하고 포맷 할 : -

|London|Jul 9 2014 1:21PM|john| 
|New York|Jul 9 2014 1:21PM|peter| 
|New Zeland|Jul 9 2014 1:21PM|Mr. Jones| 

나 ' 다음 코드를 사용하여 m

f = open(csv_file,'w') 
for lines in Table: 
    lines = lines.replace(' ','') 
    f.write(lines) 

f.close 

하지만 난 CSV 파일에 이런 식으로 뭔가를 얻고 파일에서 : -

|London|Jul920141:21PM|john| 
|NewYork|Jul920141:21PM|peter| 
|NewZeland|Jul920141:21PM|Mr.Jones| 

어떻게 불필요한 공백을 제거 할 수 있으며 아직 단어 사이에있는 onces을 유지? 막대에

답변

6

분할 후 str.strip()과 결과를 제거 : 여기 컨텍스트 매니저로 출력 파일을 열거야

with open(csv_file, 'w') as f: 
    for line in table: 
     line = '|'.join([c.strip() for c in line.split('|')]) 
     f.write(line + '\n') 

을; 이 경우 f.close()으로 전화 할 필요가 없습니다. 실제로 코드가 이 아니더라도f.close()으로 전화하십시오. 또한 공백을 제거했을 때 새 줄을 \n 개 추가해야합니다.

데모 :

>>> table = '''\ 
... |London   |  Jul 9 2014 1:21PM |john   | 
... |New York  |  Jul 9 2014 1:21PM |peter  | 
... |New Zeland  |  Jul 9 2014 1:21PM |Mr. Jones | 
... '''.splitlines() 
>>> for line in table: 
...  line = '|'.join([c.strip() for c in line.split('|')]) 
...  print line 
... 
|London|Jul 9 2014 1:21PM|john| 
|New York|Jul 9 2014 1:21PM|peter| 
|New Zeland|Jul 9 2014 1:21PM|Mr. Jones| 
+0

하나를 사용할 수 있습니다. 이것은 영리하다! – justhalf

0

당신은 regex

import re 
f = open(csv_file,'w') 
for lines in Table: 
    lines = re.sub(r' *\| *','|',lines) # Remove spaces before and after the pipe character 
    f.write(lines) 
f.close() 
관련 문제