Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换CSV文件行中的字符串_Python_Csv - Fatal编程技术网

Python 替换CSV文件行中的字符串

Python 替换CSV文件行中的字符串,python,csv,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 te

我在检测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个字符来识别行。

如果我这样做,我会打开“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因此,如果不包含“g”的行中没有“n”,则将返回错误


3您可以尝试N_索引分配,以防止错误停止清理。

您的问题仍然不清楚。给我一个输入样本和输出样本。谢谢。还请说明您的代码有什么问题。不幸的是,第一个假设是一个问题,有些行的长度超过1'n',需要替换第一个n。当前,行n_index=Cities[i].index'n'正在抛出错误值error:'n'不在列表中您知道此值错误发生在包含n的行中吗?对于多行n,list.index返回前n的索引,因此list.insert将在前n之前插入冒号。我刚刚检查过,这是我的错。我创建的列表层太多。现在起作用了。