我有一个 csv 文件,如 120 列 x 4500 行。 我读到第一行第一列中的“客户名称”字段。 然后,我在第二个 cvs 文件中查找此字段,其中包含“客户名称和客户 ID” 我编写一个新的 cvs 文件,其中包含“客户名称”、客户 ID“以及 119 列的所有其余内容。并继续直到第一个文件结束。
这是有效的,但我在前两个 csv 文件中到处都有特殊字符。 我不想用“Montr\xe9al-Nord”代替 Montréal-Nord 或在生成的 csv 文件中使用“Val\xe9rie Lamarche”而不是“Valérie Lamarche”。
这是一个测试代码示例:
# -*- coding: utf-8 -*-
import types
import wx
import sys
import os, os.path
import win32file
import shutil
import string
import wx.lib.dialogs
import re
import EmailAttache
import StringIO,csv
import time
import csv
outputfile=open(os.path.join(u"c:\\transales","Resultat-second_contact_act.csv"), "wb")
resultat = csv.writer (outputfile )
def Writefile ( info1, info2 ):
print info1, info2
resultat.writerow( [ `info1`,`info2` ,`line[1]`,`line[2]`,`line[3]`,`line[4]`,`line[5]`,`line[6]`,`line[7]`,`line[8]`,`line[9]`,`line[10]`,`line[11]`,`line[12]`,`line[13]`,`line[14]`,`line[15]`,`line[16]`,`line[17]` ] )
data = open(os.path.join(u"c:\\transales","SECONDARY_CONTACTS.CSV"),"rb")
data2 = open(os.path.join(u"c:\\transales","AccountID+ContactID.csv"),"rb")
source1 = csv.reader(data)
source2 = csv.reader(data2)
for line in source1:
name= line[0]
data2.seek(0)
for line2 in source2:
if line[0] == line2[0]:
Writefile(line[0],line2[1])
break
outputfile.close()
有什么帮助吗?
问候,弗朗索瓦
最佳答案
虽然我不熟悉 csv.reader 或 writer,但我最近一直在处理 utf-8 文件读取,也许使用编解码器模块可能会帮助你。
而不是,
data = open(..., "wb")
尝试,
import codecs
然后对于所有 utf-8 文件,使用,
data = codecs.open(..., "rb", "utf-8")
这会自动以 unicode (utf-8) 形式读取您的文件,并可能将它们正确写入您的文件。
关于python - 如何在Python中使用带有法语字符的csv.reader,例如é,à,ç,ê,ë,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356074/