在python中读取每列unicode文件的数据

时间:2014-10-29 11:41:58

标签: python unicode

我有一个文本文件存储在unicode中,我试图检索每列的数据并放入一个列表供以后计算。我的代码如下。它不是作为一条线而是作为字符读取

文字档案

DateρOrderIDρProductIDρUserIDρAccMngrIDρQuantity
2013-01-01ρ1000ρ1ρ1ρ10
2013-01-01ρ1000ρ2ρ1ρ5

代码

import codecs

fhand = codecs.open('Transaction_logs.txt',encoding='utf-8')
inp = fhand.read()
#print inp

for line in inp:
  print repr(line)

示例输出

u'\r', u'\n, u'2',u'0'

2 个答案:

答案 0 :(得分:1)

file.read()将整个内容作为单个字符串读取,因此您的for循环会对单个字符进行迭代。您所需要的只是直接迭代文件,即:

fhand = codecs.open('Transaction_logs.txt',encoding='utf-8')
for line in fhand:
  print repr(line)

现在给出你的文件格式,你可能想要使用内置的csv模块 - 它可以处理任何分隔符并妥善处理很多低级无聊的细节。

答案 1 :(得分:0)

这是一个奇怪的分隔符,但这就是你所需要的。我注意到你的输入文件也有BOM字符。使用utf-8-sig自动识别并从输入中删除它,

with codecs.open('Transaction_logs.txt',encoding='utf-8-sig') as f:
    for line in f:
        print line.strip().split(u'\u03c1')

输出:

[u'Date', u'OrderID', u'ProductID', u'UserID', u'AccMngrID', u'Quantity']
[u'2013-01-01', u'1000', u'1', u'1', u'10']
[u'2013-01-01', u'1000', u'2', u'1', u'5']

请注意,csv模块在​​没有其他帮助的情况下不能很好地执行Unicode。例如,在我的测试中,它只允许1个字符的分隔符,并且在内部不支持Unicode,并且您的分隔符编码为3个字节。