python csv阅读器+特殊字符

时间:2015-09-25 00:13:29

标签: python csv

我正在编写脚本来读取csv文件,并使用pygraphml在图表中写入数据。

问题是文件第一列有一些像这样的数据,我无法读取它们。

Master Muppet™ 约瑟尔湾 Kýrie,eléison

这是我的python脚本

import csv
import sys
from pygraphml import Graph
from pygraphml import GraphMLParser

#reload(sys)
#sys.setdefaultencoding("utf8")

data = []  # networkd data to write
g = Graph() # graph for networks

#Open File and retrive the target rows
with open(r"C:\Users\csvlabuser\Downloads\test.csv","r") as fp:
    reader = csv.reader(fp)
    unread_count = 2
    completed_list = []

    try:
        for rows in reader:
            if "tweeter_id" == rows[2]:  # skip and check the header
                print("tweeter_id column found")
                continue
            #if rows[2] not in completed_list:                    
            n = g.add_node(rows[2].encode("utf8"))
            completed_list.append(rows[2])
            n['username'] = rows[0].encode("utf8")
            n['userid'] = rows[1]
            if rows[3] != "NULL":   # edges exist only when there is retweets id
                g.add_edge_by_label(rows[2], rows[3])


            print unread_count
            unread_count +=1

    except:
        pass

fp.close()
print unread_count

g.show()
# Write the graph into graphml file format
parser = GraphMLParser()
parser.write(g, "myGraph.graphml")

请告诉我问题在哪里。

提前致谢。

1 个答案:

答案 0 :(得分:1)

Python 2 csv模块无法处理包含unicode字节的NUL输入或输入(请参阅module page顶部的注释)。由于您使用print作为关键字而不是函数,我猜您正在使用Python 2.要在Python 2中使用带有Unicode的csv,您必须转换为{{1}编码。

csv module's Examples section包含包装器的定义(UTF-8UTF8RecoderUnicodeReader),允许您以任意编码解析输入,无缝修复编码,因此{{1}可以处理输入,然后解码回Python UnicodeWriter对象(表示文本为“纯”Unicode文本,而不是特定的字节编码)。