【问题标题】:Reading a file with "latin small letter thorn" as delimiter in python在python中读取带有“latin small letter thorn”作为分隔符的文件
【发布时间】:2014-05-20 14:08:38
【问题描述】:

我正在尝试读取以“latin small letter thorn”http://www.fileformat.info/info/unicode/char/fe/index.htm 作为分隔符的文件。我正在尝试使用 csv 文件 https://docs.python.org/3.0/library/csv.html API。

我尝试了各种方法来表示源代码中的分隔符,但总是出错:

dialect = csv.Sniffer().sniff(f.readline(), delimiters='\xc3\xbe')
print dialect.delimiter

错误: 嗅探中的文件“/usr/lib64/python2.6/csv.py”,第 180 行 引发错误,“无法确定分隔符” _csv.Error: 无法确定分隔符

如何在python的csv API中将这样的字符表示为分隔符?

提前致谢!

【问题讨论】:

  • 如果可以,请使用 Python 3——它有更好的 unicode 支持。然后你可以把“小刺”复制到你的源代码中,一切都会好起来的。在 Python 2.6 中,您需要确保在文件顶部设置 ~*~coding: utf-8~*~ 并使用 u'' unicode 字符串等。另外,请注意您的 Python 版本。您正在链接到 Python 3 文档,但您的错误是 Python 2.6!
  • 不幸的是我不能使用 python 3 :(。我尝试通过 # -- coding: utf-8 -- 设置编码并将分隔符输入为 delimiters=u'\ u00FE',但这也不能解决问题:(
  • 似乎极不可能使用 Unicode 多字节字母作为 CSV 分隔符。你确定文件是 UTF-8 吗?
  • 你的问题让我想起了这张图:media-cache-cd0.pinimg.com/736x/9b/e3/94/… 如果这是一次性任务,那么任何事情都是合法的 - 你不妨在文字处理器中打开它并将所有的 þ 更改为“正常”CR。否则,您是否尝试过 ord('þ') 和可能的 chr(ord('þ')) 来检查要查找您的系统的字符?

标签: python csv


【解决方案1】:
f = open('yourfile.csv', 'r').read().split('\n')
for i in f:
    i = i.split('þ')
    print i

【讨论】:

  • 这有点令人困惑,因为您没有使用 Unicode 文字(例如 u'þ'),因此您最终会得到一个使用解释器默认编码的字符串。
  • 当我使用包含“testingþtwoþthree \nfourþfiveþsix”的 CSV 执行此操作时,它可以工作。
  • 是的,如果两者都或都不是 Unicode。在您的情况下,您将文件内容读取为bytes (str),所以它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多