2013-03-29 79 views
0

具體而言,我從Google Adwords導出了一個csv文件。附加到換行符的音樂註釋Python

我一行一行讀取文件並更改電話號碼。

下面是文字腳本:

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

而且changeNums()只是執行一些字符串替換,並返回字符串。

問題是在印刷換行符的結尾處是一個音符。

musical note

原來的CSV沒有這個注,線的末端。另外,我無法複製粘貼該筆記。

這是一種編碼問題或發生了什麼?

+4

這可能只是你的文本編輯器... – Adam

+0

該屏幕是空閒輸出 – user1342836

+1

請附上打印再版(newdata)'結果這種線的'輸出。 –

回答

0

或者:

  • 原始文件有一些字符在它(他們被展示在終端這個符號)
  • changeNums創造這些字符
  • stdout.write正在發送一些未解釋的換行符號,再次被終端顯示爲此符號,將此行更改爲打印(新數據)

我的猜測是: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) 

一個奇怪的「注」字末通常是* nix中之間的CR/LF換行的問題* DOS/*贏環境。