Python CSV-为每个单元格使用字典

Python CSV-为每个单元格使用字典,python,csv,dictionary,cell,Python,Csv,Dictionary,Cell,我希望我的问题有意义。我正在寻找一种方法来读取csv文件,并将字典映射到每个单元格。我可以让它工作没有csv,但我有一个艰难的时间让它工作时,阅读csv文件 注: 这就是我到目前为止所做的: dict0 = {'A':'CODE1', 'B':'CODE2'} text0 = [] string0 = 'A' dict1 = {'avenue':'ave', 'street':'st', 'road':'rd', 'court':'ct'} text1 = [] string1 = '123

我希望我的问题有意义。我正在寻找一种方法来读取csv文件,并将字典映射到每个单元格。我可以让它工作没有csv,但我有一个艰难的时间让它工作时,阅读csv文件

注:

这就是我到目前为止所做的:

dict0 = {'A':'CODE1', 'B':'CODE2'}
text0 = []
string0 = 'A'

dict1 = {'avenue':'ave', 'street':'st', 'road':'rd', 'court':'ct'}
text1 = []
string1 = '123 MAIN AVENUE'

dict2 = {'(':'', ')':'', '-':'', ' ':'', '/':'', '\\':''}
text2 = []
string2 = '(123) 456/7890'


for i in string0:
    newcode = dict0.get(i,i)
    text0.append(newcode)
print ' '.join(text0)


for i in string1.lower().split(' '):
    newaddress = dict1.get(i.lower(),i)
    text1.append(newaddress)
print ' '.join(text1)


for i in string2:
    newphone = dict2.get(i,i)
    text2.append(newphone)
print ''.join(text2)
上面的代码完全按照我的预期工作,但在读取csv文件时,我很难让它正常工作

多谢各位

编辑#1:******************************************************************************

以下是sample1.csv的摘录:

A,123 MAIN STREET,(123) 456-7890
B,888 TEST ROAD,(222) 555-5555
A,123 MAIN STREET,(123) 456-7890
B,888 TEST ROAD,(222) 555-5555
如果代码不够清晰,很抱歉,但这就是我寻求指导的原因

本质上,每一列都有一个与其关联的字典,因此“code”列将根据单元格A1(“a”或“B”)的值写入“CODE1或CODE2”

列2将有dict1{}与之关联,并将清理地址列。 第3列将有dict2{}与之关联,并将从电话号码列中删除(,),/,\项

我的问题是我不知道如何启动代码。如果我将单元格信息设置为变量(请参阅上面的代码,变量:string0、string1、string2),我可以编写代码,但我不知道如何开始迭代csv文件

多谢各位

编辑2:*********************************************************************************************

这是我尝试使用
import csv

dict0 = {'A':'CODE1', 'B':'CODE2'}
text0 = []
dict1 = {'avenue':'ave', 'street':'st', 'road':'rd', 'court':'ct'}
text1 = []
dict2 = {'(':'', ')':'', '-':'', ' ':'', '/':'', '\\':''}
text2 = []

import csv

with open('O:/sample1.csv', 'rb') as c:
    reader = csv.reader(c)

    for row in reader:

        for i in row[0]:
            newcode = dict0.get(i,i)
            text0.append(newcode)


        for i in row[1].lower().split(' '):
            newaddress = dict1.get(i.lower(),i)
            text1.append(newaddress)


        for i in row[2]:
            newphone = dict2.get(i,i)
            text2.append(newphone)


        print str(' '.join(text0)) + ',' + str(' '.join(text1)) + ',' + str(''.join(text2))
印刷品:

CODE1,123 main st,1234567890
CODE1 CODE2,123 main st 888 test rd,12345678902225555555
我想打印:

CODE1,123 main st,1234567890
CODE2,888 test rd,2225555555
希望有人能帮忙

多谢各位

编辑*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/strong>

能否改进以下内容(语法、缩进等):

sample1.csv:

A,123 MAIN STREET,(123) 456-7890
B,888 TEST ROAD,(222) 555-5555
A,123 MAIN STREET,(123) 456-7890
B,888 TEST ROAD,(222) 555-5555
代码如下:

import csv

newcsv = csv.writer(open('O:/csvfile1.csv', 'ab'))

with open('O:/sample1.csv', 'rb') as c:
    reader = csv.reader(c)

    dict0 = {'A':'CODE1', 'B':'CODE2'}
    dict1 = {'avenue':'ave', 'street':'st', 'road':'rd', 'court':'ct'}
    dict2 = {'(':'', ')':'', '-':'', ' ':'', '/':'', '\\':''}

    # read element in *reader*
    for row in reader:
        text0 = []
        text1 = []
        text2 = []
        newline = []

        # read element in *row*
        for i in row[0]:
            newcode = dict0.get(i,i)
            text0.append(newcode)
        newline.append(' '.join(text0))

        for i in row[1].lower().split(' '):
            newaddress = dict1.get(i.lower(),i)
            text1.append(newaddress)
        newline.append(' '.join(text1))

        for i in row[2]:
            newphone = dict2.get(i,i)
            text2.append(newphone)
        newline.append(''.join(text2))


        newcsv.writerow(newline)

        print newline
打印以下内容:

['CODE1', '123 main st', '1234567890']
['CODE2', '888 test rd', '2225555555']
创建csvfile1.csv(使用“|”作为“单元格分隔符”),它正是我想要的:

CODE1|123 main st|1234567890
CODE2|888 test rd|2225555555
只是想知道上面的代码是否可以以更有效的方式进行改进/编写


谢谢

输出混乱的原因是您没有清除循环每个周期上的
文本
变量。虽然有下面的修复方法,但我建议至少阅读,在没有太多全局变量的情况下重写代码,这样您就不会遇到像现在这样的问题

with open('O:/sample1.csv', 'rb') as c:
reader = csv.reader(c)

for row in reader:
    text0 = []
    text1 = []
    text2 = []
    for i in row[0]:
        newcode = dict0.get(i,i)
        text0.append(newcode)


    for i in row[1].lower().split(' '):
        newaddress = dict1.get(i.lower(),i)
        text1.append(newaddress)


    for i in row[2]:
        newphone = dict2.get(i,i)
        text2.append(newphone)


    print str(' '.join(text0)) + ',' + str(' '.join(text1)) + ',' + str(''.join(text2))

请添加
sample1.csv
中的摘录,好吗?至少在前几行……不清楚您的代码是做什么的,因为它与为每个单元格创建字典有什么关系。请详细说明并显示示例输入和输出。好的,我添加了sample1.csv的摘录,并试图进一步解释我的问题。您认为我发布的代码(编辑#3)可以改进吗?如果是的话,你能提供一些如何做的建议/提示吗?