替换CSV行中的字符串

时间:2014-10-15 23:28:56

标签: python csv

我在检测CSV文件中的某些字符串时遇到一个小问题,它允许我触发替换过程。

行中缺少字符串",g,"表示该行中特定列中缺少数据,一旦检测到,我想将,n,a的实例与,:,n,a交换到别处在格式原因的特定行内。输出文件是我将在此之后重定向其他更改的位置。

目前我正在使用以下代码来检测字符",g,"

import csv

def replace_all(text, dic):
for i, j in dic.iteritems():
    text = text.replace(i, j)
return text

with open('cities.csv','r') as g:
 text=g.read()
 with open('cities_clean.csv','w') as w:
    reader = csv.reader(g)
    for line in reader:
        if ",g," not in line:
                text.replace(',n,a' , ':,n,a')

CSV的几行中缺少该字母。 CSV很乱,数据在结构上类似于,",",h,e,a,d,i,n,g,",",,这就是我尝试使用1个字符识别行的原因。

1 个答案:

答案 0 :(得分:0)

如果我这样做,我会打开' cities.csv'并将其内容保存到列表列表中。 例如:

import csv
Cities= []
with open('cities.csv','r') as cityfile:
    reader=csv.reader(cityfile)
    for line in reader:
        Cities.append(line)


Cities_Clean = []
for i in range(len(Cities)):
        Cities_Clean.append(Cities[i])
    if not 'g' in Cities[i]:
        N_index=Cities[i].index('n')
        Cities_Clean.insert(N_index,':')

with open('cities_clean.csv','w') as cleanfile:
    writer=csv.writer(cleanfile)
    for line in Cities_Clean:
        writer.writerow(line)

一些注意事项:

1)这假设只有一个' n'在每行中不包含' g'

2)如果没有' n'这将返回错误。连续不包含' g'

3)您可以尝试N_index分配,以防止错误停止清理。