1

具体来说,我从 Google Adwords 导出了一个 csv 文件。

我逐行阅读文件并更改电话号码。

这是文字脚本:

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 回答