2013-03-29 2 views
0

특히 Google Adwords에서 csv 파일을 내 보냈습니다.newlines에 음악 노트가 추가되었습니다. Python

줄마다 파일을 읽고 전화 번호를 변경하십시오.

for line in open('ads.csv', 'r'): 
    newdata = changeNums(line) 
    sys.stdout.write(newdata) 

그리고 changeNums() 그냥 대체 어떤 문자열을 수행하고 문자열을 반환 :

다음은 문자 그대로 스크립트입니다.

문제는 인쇄 된 줄 바꿈 끝에 음표가 있습니다.

musical note

원래 CSV

라인의 끝 부분에이 메모가 없습니다. 또한 메모를 복사하여 붙여 넣을 수 없습니다.

인코딩 문제입니까? 무슨 일입니까?

+4

아마 그냥 텍스트 편집기입니다 ... – Adam

+0

그 화면은 IDLE 출력 – user1342836

+1

인쇄에 repr (newData의) 같은 라인'결과'의 출력을 포함하십시오입니다. –

답변

0

다음 중 하나를

  • 원본 파일은 일부 문자가 (그리고 그들은 터미널에서이 기호로 표시되는 것)
  • stdout.write가 보내는 그 문자를 만드는
  • changeNums을 터미널에서이 기호로 다시 표시되는 일부 해석되지 않은 줄 바꿈 기호는이 줄을 print (newdata)로 변경합니다.

내 생각 엔 changeNums가 추가하고 있습니다.

최고의 디버깅 명령 :

print([ord(x) for x in line]) 
print([ord(x) for x in newdata]) 
print line == newdata 

그리고 문자열에 존재하는 문자 값을 확인합니다.

+0

changeNums()는 문자 그대로'line = line.replace ('123-456-7890', '098-555-5555')'몇 번''return line' – user1342836

+0

'\ r'입니다. 인쇄 할 sys.std.write 변경 – hdante

0

과 같은 방법으로 줄 바꿈을 제거 할 수 있습니다 끝에

for line in open('ads.csv', 'r'): 
    line = line.rstrip('\n') 
    newdata = changeNums(line) 
    sys.stdout.write(newdata) 

홀수 "참고"문자는 일반적으로 * 괜찬 사이의 CR/LF 줄 바꿈 문제 * 도스/* 환경을 승리. universal line support

1

열어보십시오 :

for line in open('ads.csv', 'rU'): 
    # etc