937135952 发表于 2023-6-6 13:09:42

python如何把列表写入csv的指定列

如题,比如我想把列表lsit=续写进已有文件的第10列,应该如何写

isdkz 发表于 2023-6-6 13:25:20

要将一个列表写入CSV文件的指定列,你可以使用pandas库。这个库提供了一个非常方便的数据处理框架,可以直接读取和写入CSV文件。以下是你可以按照的步骤:

1. 先读取CSV文件到pandas的DataFrame对象
2. 创建一个新列并将数据插入到第10列(索引为9,因为Python索引从0开始)
3. 写回到CSV文件

下面是一个代码示例:

import pandas as pd

# 读取CSV文件到DataFrame
df = pd.read_csv('myfile.csv')

# 创建新列并赋值为你的列表
df.insert(9, 'my_list', ['a', 'b', 'c', 'd', 'e'])

# 写回到CSV文件
df.to_csv('myfile.csv', index=False)


这段代码假设你的列表长度与CSV文件中的行数一致。如果列表长度不一致,你需要按实际情况进行调整。

注意, to_csv 函数中的 index=False 参数用于防止pandas在写入时添加额外的索引列。如果你需要索引列,可以去掉这个参数。

937135952 发表于 2023-6-6 13:35:20

isdkz 发表于 2023-6-6 13:25
要将一个列表写入CSV文件的指定列,你可以使用pandas库。这个库提供了一个非常方便的数据处理框架,可以直 ...

但是这样子我已有的文件会报错。UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 1: invalid continuation byte,换成GB2312也不行,大佬有没有什么解决办法

sfqxx 发表于 2023-6-6 17:53:32

您需要按照以下步骤将列表写入文件的第10列:

1. 使用Python内置的open()函数打开文件。在打开文件时,需要指定文件路径以及打开方式,例如:file = open("file.txt","r+")。

2. 在打开文件后,可以使用readlines()方法读取文件中所有数据。如果只需要访问特定行的数据,则可以使用readline()方法逐行读取文件。

3. 将要写入文件中的数据存储在列表变量中。在这个例子中,我们已经有了一个包含元素a、b、c、d和e的列表lsit。

4. 在文件中找到第10列,并将要写入的数据插入该列。在这个例子中,我们可以假设每一行都是用空格分隔的字符串,并且第10列位于第9个空格之后。因此,我们可以使用split()方法来分割每行数据,并通过索引来确定第10列的位置。最后,我们可以使用join()方法将新的字符串重新组合起来,并将其写入文件。

5. 关闭文件并退出程序,确保所有更改都已保存。

下面是一个示例程序:


file = open("file.txt", "r+")
data = file.readlines()
list = ["a", "b", "c", "d", "e"]
for i in range(len(data)):
    line = data.split()
    line.insert(9, list)
    data = " ".join(line) + "\n"
file.seek(0)
file.writelines(data)
file.close()

在这个示例程序中,我们打开了名为file.txt的文件并读取了其中的所有行。我们将要写入文件的数据(即列表lsit)存储在list变量中,并使用一个循环来遍历每一行数据。在每次迭代中,我们使用split()方法将该行分割成单词,并使用insert()方法将新的数据插入到第10列。最后,我们使用join()方法重新组合单词并将其写回到data列表中。一旦循环结束,我们使用seek(0)方法将文件指针移动到文件开头,并使用writelines()方法将更改后的数据写回到文件中。最后,我们关闭文件并退出程序。请注意,在这个示例程序中,我们假设每行数据都已按照空格分隔,并且第10列位于第9个空格之后。在实际情况中可能需要根据文件特定的格式进行调整。
页: [1]
查看完整版本: python如何把列表写入csv的指定列