gpt4 book ai didi

python - 在不知道Python位置的情况下替换CSV中的单词

转载 作者:行者123 更新时间:2023-12-01 03:52:49 26 4
gpt4 key购买 nike

我试图在几个巨大的 CSV 文件中查找 NIL 一词的出现并将其替换为空字符串。我已经查找了解决方案,但我尝试过的解决方案不起作用,因为该行是一个列表,而我发现的其他解决方案似乎具有特定位置,但我不知道该位置在哪里NIL 会出现,因为文件总是在变化。

我的代码:

import Tkinter, tkFileDialog, os, csv

root = Tkinter.Tk()
root.withdraw()
dirname = tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a directory')
for subdir, dirs, files in os.walk(dirname):
for file in files:
with open (os.path.join(subdir, file), 'rb') as csvfile:
#Check if the file has headers#
if 'Result : Query Result' in csvfile.readline():
with open(os.path.join(subdir, os.path.splitext(file)[0] + '_no_headers_no_nil.csv'), 'wb') as out:
reader = csv.reader(csvfile.readlines()[6:], delimiter=',')
writer = csv.writer(out)
for row in reader:
#replace NIL occurrences with empty strings
row = row.replace('NIL', '')
separated = row.split(',')
writer.writerow(row)

else:
#The file doesn't have headers
#find and replace NIL occurrences goes here
print 'file skipped ' + file + ': No headers found'

这是 CSV 类型的示例

csv example

最佳答案

如果 Nil 不在获取索引的每一行中,则使用 try/except 并分配给空字符串:

try:

row[row.index("NIL")] = ""
except IndexError:
pass

index 将找到 Nil 在列表中的位置,一旦找到该分配就会替换它:

In [9]: lst = ["NIL", "foo"]

In [10]: lst[lst.index("NIL")] = ""

In [11]: lst
Out[11]: ['', 'foo']

由于每行可以有多个 NIL 字符串,因此您需要循环遍历每个元素:

row[:] = [ele if ele != "NIL" else "" for ele in row] 

而且你不需要调用readlines,你可以使用itertools.islice从第n行开始:

from itertools import islice

reader = csv.reader(islice(csvfile, 6, None), delimiter=',')

关于python - 在不知道Python位置的情况下替换CSV中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37976523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com