Python CSV文件读取和保存

Python CSV文件读取和保存,python,python-3.x,list,csv,Python,Python 3.x,List,Csv,我在将最新座位更新保存到CSV文件时遇到问题。 我希望用户预订的每个座位都能收到CSV文件中的更改。 示例:如果用户预订A1座位,A1 is CSV文件将替换为X 我的程序目标是读取csv文件并存储它,然后在以后对其进行替换。每排有5个座位。A1-A5为第一排商务舱,B1-B5为第二排商务舱。我希望该程序将已占用/预订的座位替换为“X”。 示例:A1 | X | A3 | A4 | A5(A2不可用,已占用) 这是我的密码: seat =[] csvfile = open('coba.csv')

我在将最新座位更新保存到CSV文件时遇到问题。 我希望用户预订的每个座位都能收到CSV文件中的更改。 示例:如果用户预订A1座位,A1 is CSV文件将替换为X

我的程序目标是读取csv文件并存储它,然后在以后对其进行替换。每排有5个座位。A1-A5为第一排商务舱,B1-B5为第二排商务舱。我希望该程序将已占用/预订的座位替换为“X”。 示例:A1 | X | A3 | A4 | A5(A2不可用,已占用)

这是我的密码:

seat =[]
csvfile = open('coba.csv') 
seating = csv.reader(csvfile)
for line in seating:
    seat.append(line)

print("Buy seat ?")
answer_1 = input("Answer : ")
if (answer_1 == "yes"):
    answer_2 = input("Enter preferred seat: ")
    if (answer_2 == "A1"):
        row = 1
        column = 0
        seat[row][column] = "X"
        for line in seat:
            print(' | '.join(line))
        writer = csv.writer(open('coba.csv', 'w'))
        writer.writerows(line)
我的CSV文件:

[Business]
A1,A2,A3,A4,A5
B1,B2,B3,B4,B5
[Economy]
C1,C2,C3,C4,C5
D1,D2,D3,D4,D5
E1,E2,E3,E4,E5
错误:

PermissionError:[Errno 13]权限被拒绝:“coba.csv”


提前感谢

这给出了A列的前5行:

from pandas import read_csv

data = read_csv('name.csv')

result = []

for i in range(5):
    result.append(data['A1'][i])

我想你有打字错误。您应该选中
len(line)
而不是
len(seating)
,并且在
座位上使用list而不是tuple

import csv

def load():
    seat = []
    csvfile = open('x.csv')
    seating = csv.reader(csvfile)
    for line in seating:
        if len(line) == 5:
            seat.append(line)
    print(seat)

load()

这只是对代码的修复。您可以在找到50%的问题解决方案

有更好的解决方案来满足您的需求

如何修复?
  • 初始化
    seat
    []
    ,因为我们知道tuple
    ()
    是不可变的

  • seatching
    是一个迭代器,因此如果您希望计算长度,请将其转换为列表

科巴·皮

导入csv
def load():
座位=[]
csvfile=open('coba.csv')
座位=csv.reader(csvfile)
打印(类型(座位))
座位=列表(座位)
打印(类型(座位))
对于排队座位:
印刷品(座位)
如果len(第[0]行)。拆分(',')==5:
#打印(“|”。连接(行))
座位。附加(行)
印刷品(座位)
加载()
"""
[A1、A2、A3、A4、A5']、[B1、B2、B3、B4、B5']
[A1、A2、A3、A4、A5']、[B1、B2、B3、B4、B5']
[A1、A2、A3、A4、A5']、[B1、B2、B3、B4、B5']
[A1,A2,A3,A4,A5'],[B1,B2,B3,B4,B5']
"""

用每行的列表填充您的座位列表

seats = []
with open('file.csv', 'rb') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',')
    for row in csvreader:
        line = tuple(row)
        if len(line) == 5:
            seat.append(list(line))

浏览列表中的每一行,并将其更改为您需要的内容。

我可以知道为什么是熊猫吗?我不太确定您希望该程序做什么。它失败是因为您无法在CSV读取器上调用
len()
。您试图将什么附加到CSV文件,以及您希望为附加建立什么条件?您的问题是什么?您要提取哪些数据?标题行的内容是什么?A1-A5和B1-B5的用途是什么?你需要什么数据?@Chirag阅读3行文字——使用像pandas这样成熟的框架简直是过火了。不是所有的数据都必须像钉子一样处理,即使你挥动一把锤子。更新你的问题,而不是在评论中发布。不起作用。您的df与您认为的不同,首先在3行上使用pandas是过分的,而且您根本没有一个
来让这个代码工作是的,我忘了。我想我的问题搞错了。这个问题在编辑之前非常复杂@PatrickArtner@PatrickArtner顺便说一下,完整的csv文件有business class和economy class标题,所以我想读一下每一行包含5个条目的内容,这是为了响应dude!我会试试的,顺便说一句,座位已经排好了,有点打字错误呵呵@CtrlS嗯,我编辑了这个帖子,对不起,我是新来的platform@DeltaTroz你编辑了什么帖子?您尚未在问题下发布任何新评论。此外,您应该编辑您的问题,以包括您在评论中提到的新细节。@DeltaTroz我以为您要回复PatrickArtner。哦,好吧。
seats = []
with open('file.csv', 'rb') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',')
    for row in csvreader:
        line = tuple(row)
        if len(line) == 5:
            seat.append(list(line))