im当前正在尝试创建一个软件,该软件可以查找并截断.csv文件中包含多个字符集的单元格。
我在这里: 导入csv
with open('test.csv', 'r', newline = '', encoding = "UTF-8") as csv_file, \
open('output.csv', 'x',newline='',encoding="UTF-8") as output_file:
dialect = csv.Sniffer().sniff(csv_file.read(2048))
dialect.escapechar = '\\'
csv_file.seek(0)
writer = csv.writer(output_file, dialect)
for row in csv.reader(csv_file, dialect) :
copy = row
for col in copy :
#truncate the file to desired lenght
col = col[:253] + (col[:253] and '..')
writer.writerow(copy)
这里的问题是新文件已创建但未更改。
感谢您的考虑。
答案 0 :(得分:1)
问题是,您重新创建了col值。这意味着旧值不会更改,并且仍然是列表中的旧值。最好是重新创建原始列表,这可以通过“列表理解”来实现。
{{1}}
此外,如果变量名称相同,它实际上不会执行任何操作。因此,您将更改后的值col命名为与循环变量相同的名称,但这并不意味着该循环变量包含的内容(因此列表副本中的值)现在已被替换。
这也是为什么您不必执行copy = row的原因。您可以只使用行。