我是python中的新手,我正在编写代码来读取CSV文件中的数据。
数据如下所示:
10944750,13451,0,6��4��
10944750,21110,0,6��7��
10944750,1131,0,7��23��
10944750,8689,0,5��2��
最后一列代表日期,例如第一行:6月4日。但其中有两个中国宪章。所以我必须解码并得到月和日。
我的代码:
import codecs
raw_file=open('Documents/t_alibaba_data.csv')
result=open('Documents/result.txt','w')
for line in raw_file.readlines():
entry=line.split(",")
deco=entry[3].decode("gbk")
month=deco[0]
if len(deco)==5:
day=int(deco[2])*10+int(deco[3])
else:
day=int(deco[2])
result.write(",".join(entry[:3])+","+str(month)+","+str(day)+"\n")
print result
我的IDE中没有警报或错误,但我的结果中也没有任何内容。
答案 0 :(得分:0)
首先:你没有告诉Python你想要从文件中读取。 (将'r'添加到raw_file.open()。
并且,在运行程序时,在解码最后一列之后,元素nr 3(deco [2])是中文符号,而不是当天的nr。
我稍稍调整了你的程序,当它看起来像这样时,它起作用(至少如果我理解你的问题):
import codecs
raw_file=open('Documents/t_alibaba_data.csv', 'r')
result=open('Documents/result.txt','w')
for line in raw_file.readlines():
entry=line.split(",")
deco=entry[3].decode("gbk").strip()
month=deco[0]
if len(deco)==5:
day=int(deco[2])*10+int(deco[3])
else:
day=int(deco[4])
result.write(",".join(entry[:3])+","+str(month)+","+str(day)+"\n")
result.close()
此外,len(deco)永远不会是5,而if测试将永远不会成立。长度总是长于5.尝试打印出不同装饰的长度,看看实际长度是多少。 如果在字符串的末尾有空格,那么在deco上使用strip函数可能是明智的。当我打印你给出的装饰长度时,长度为8或9,具体取决于正在处理的线。