1

具体的には、Google Adwords から csv ファイルをエクスポートしました。

ファイルを 1 行ずつ読み、電話番号を変更します。

リテラル スクリプトは次のとおりです。

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

そしてchangeNums()、いくつかの文字列置換を実行して文字列を返します。

問題は、印刷された改行の最後が音符であることです。

音符

元の CSV には、行末にこの注記がありません。また、メモをコピーして貼り付けることができません。

これはある種のエンコーディングの問題ですか、それとも何が起こっているのですか?

4

3 に答える 3

3

ユニバーサル ライン サポートで開いてみてください:

for line in open('ads.csv', 'rU'):
    # etc
于 2013-03-29T19:40:30.690 に答える
0

また:

  • 元のファイルにはいくつかの文字が含まれています(端末ではこの記号として表示されています)
  • changeNums はそれらの文字を作成しています
  • stdout.write は、解釈されない改行記号を送信しています。これは端末によってこの記号として再び表示されます。この行を print(newdata) に変更します

私の推測: changeNums はそれを追加しています。

最適なデバッグ コマンド:

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

文字列に存在する文字値を確認します。

于 2013-03-29T18:20:32.737 に答える
0

次の方法で改行を削除できます。

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

末尾の奇妙な「メモ」文字は通常、*nix 環境と *dos/*win 環境の間の CR/LF 改行の問題です。

于 2013-03-29T18:21:58.860 に答える