Python csv.writer 添加不需要的字符

标签 python csv writer

我让我的脚本读取 csv 文件,我想先将其保存到数组中,然后切片第二个元素(即 csv 文件的第二行)并将数组写回 csv 文件。 csv 文件之前看起来像这样:

first name,username,age,status
test1,test1_username,28,2023-08-18 13:41:10+00:00
test2,test2_username,28,2023-08-18 13:41:10+00:00
test3,test3_username,28,2023-08-18 13:41:10+00:00
test4,test4_username,28,2023-08-18 13:41:10+00:00
test5,test5_username,28,2023-08-18 13:41:10+00:00
test6,test6_username,28,2023-08-18 13:41:10+00:00
test7,test7_username,28,2023-08-18 13:41:10+00:00
test8,test8_username,28,2023-08-18 13:41:10+00:00

运行我的脚本后,csv 是这样的:

first name,username,age,status
test2', 'test2_username', '28', '2023-08-18 13:41:10+00:00']]
test3', 'test3_username', '28', '2023-08-18 13:41:10+00:00']]
test4', 'test4_username', '28', '2023-08-18 13:41:10+00:00']]
test5', 'test5_username', '28', '2023-08-18 13:41:10+00:00']]
test6', 'test6_username', '28', '2023-08-18 13:41:10+00:00']]
test7', 'test7_username', '28', '2023-08-18 13:41:10+00:00']]
test8', 'test8_username', '28', '2023-08-18 13:41:10+00:00']]

但这就是我想要的输出(与之前相同,但没有第二行):

first name,username,age,status
test2,test2_username,28,2023-08-18 13:41:10+00:00
test3,test3_username,28,2023-08-18 13:41:10+00:00
test4,test4_username,28,2023-08-18 13:41:10+00:00
test5,test5_username,28,2023-08-18 13:41:10+00:00
test6,test6_username,28,2023-08-18 13:41:10+00:00
test7,test7_username,28,2023-08-18 13:41:10+00:00
test8,test8_username,28,2023-08-18 13:41:10+00:00

如果我多次运行它,就会突然出现更多像 ' 和 "这样的字符?为什么会发生这种情况?

我该如何解决这个问题?这是我的代码:

data = []

rows = []
with open('list.csv', 'r', encoding='UTF-8') as f:
    data = csv.reader(f,delimiter=",",lineterminator="\n")
    for row in data:
        rows.append([row,])

rows = rows[2:]
with open('list.csv', 'w', encoding='UTF-8') as g:
    writer = csv.writer(g, delimiter="\n")
    writer2 = csv.writer(g, lineterminator="\n")
    writer2.writerow(['first name', 'username', 'age', 'status'])

提前致谢!

最佳答案

您没有向输出文件写入任何内容(或者示例中缺少任何内容)。另外,使用 writer.writerows 写入数据:

import csv

rows = []
with open("in.csv", "r", encoding="UTF-8") as f:
    data = csv.reader(f, delimiter=",", lineterminator="\n")
    for row in data:
        rows.append(row)    # <-- append only `row` to the list, not `[row]`

rows = rows[2:]
with open("out.csv", "w", encoding="UTF-8") as g:
    writer = csv.writer(g, lineterminator="\n")
    writer.writerow(["first name", "username", "age", "status"])
    writer.writerows(rows)  # <-- use `writer.writerows` to write the data in one one step

out.csv 将包含:

first name,username,age,status
test2,test2_username,28,2023-08-18 13:41:10+00:00
test3,test3_username,28,2023-08-18 13:41:10+00:00
test4,test4_username,28,2023-08-18 13:41:10+00:00
test5,test5_username,28,2023-08-18 13:41:10+00:00
test6,test6_username,28,2023-08-18 13:41:10+00:00
test7,test7_username,28,2023-08-18 13:41:10+00:00
test8,test8_username,28,2023-08-18 13:41:10+00:00

关于Python csv.writer 添加不需要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76964144/

相关文章:

python - 无法在python中使用pytesseract从tif图像中提取文本

python - 在 Python pandas 中有选择地将 float 转换为整数和小数

python - 编程错误 : 1064 while executing inspectdb with django and mysql database

python - 在 Python 中,是否可以将函数参数的类型限制为两种可能的类型?

mysql - 将 CSV 数据合并到现有表中

python - 在单元格中写入带有分隔符的 CSV 文件(两点)

web-scraping - 将输出(println!)转换为.csv文件

java - 需要删除csv中的空列

java将列表字符串写入csv文件

java - ObjectOutputStream 写入额外的字符