簡體   English   中英

在 csv 文件的行中添加一個字符

[英]Adding a character to a row in a csv file

我正在嘗試為我的運動卡創建一個清單程序。 我想設計一個 function 來查找我輸入的卡號,如果那里沒有 x,則在數字之前的 have 列中插入一個 x。 我在下面添加了 csv 示例和相關代碼

Have,Card
,1 Will Harridge
,2 Warren Giles
,3 Elmer Valo - Kansas City Athletics
,4 Carlos Paula - Washington Senators
,5 Ted Williams - Boston Red Sox
,6 Ray Boone - Detroit Tigers
import csv


def addcard(card):
    for i in CardData:



Cardlist = open('1956topps.csv')
CardListReader = csv.reader(Cardlist)
CardData = csv.writer(CardListReader)


while True:
    Option = int(input(" Choose your option: '\n' 1. Add a card to the collection '\n' "
                       "2. Delete a card form the collection '\n' 3. Print a list of cards you need '\n' "
          "4. Print a list of cards you have '\n' 5. Look up individual card info '\n' 6. Quit'\n'"))
    if Option == 1:
        card = input('Enter the card number you want to add \n')
        addcard(card)

通過直接操作文本文件,您會發現這相當困難; 最好將整個數據結構讀入原生 Python 數據結構(例如列表列表),修改內存中的數據,然后重寫整個文件。

如果您使用專門用於此的庫,例如Pandas ,這將更加容易。 例如,首先不要將卡號直接包含在 Card 列中,而是為它創建一個單獨的列,如下所示:

Number,Card,Have
1,Will Harridge,0
2,Warren Giles,0
3,Elmer Valo - Kansas City Athletics,0
4,Carlos Paula - Washington Senators,0
5,Ted Williams - Boston Red Sox,0
6,Ray Boone - Detroit Tigers,0

然后:

import pandas as pd

filename = '1956topps.csv'
cards = pd.read_csv(filename, dtype={'Number': int, 'Have': bool}, index_col='Number')

# E.g. mark card 5 as owned:
cards.loc[5]['Have'] = True

# Write back out to the same file
cards.to_csv(filename)

如果您的集合變得更大或將經常修改,您可能需要考慮使用SQLite 數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM