Python csv处理

2024-09-29 23:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python练习,需要编写一个程序,从5个csv文件名QLD2010.csv、QLD2011.csv、QLD2012.csv、QLD2013.csv和QLD2014.csv中提取信息 在每个文件中都有如下数据:

Girl Names,Count of Girl Names,Boy Names,Count of Boy Names
Ruby,440,Cooper,493
Mia,425,William,493
Isabella,401,Jack,452

我必须用以下格式将5个文件中的数据合并到一个新的csv文件:

Year,Babyname,Count of names,Gender

例如

2010,Harper,54,Girl
2010,Hunter,195,Boy

我不知道如何使'年'从文件名和如何合并女孩的名字和男孩的名字在一行,并显示性别。有人知道怎么做吗?谢谢!你知道吗


Tags: 文件ofcsv数据程序names文件名count
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:12

如果文件名都有相同的格式,您可以使用切片来轻松获得年份

In [1]: filenames = 'QLD2010.csv QLD2011.csv QLD2012.csv QLD2013.csv QLD2014.csv'.split()

In [2]: filenames
Out[2]: ['QLD2010.csv', 'QLD2011.csv', 'QLD2012.csv', 'QLD2013.csv', 'QLD2014.csv']

In [4]: [fn[3:7] for fn in filenames]
Out[4]: ['2010', '2011', '2012', '2013', '2014']

或者你可能想把它们放进字典里以便以后查阅

In [5]: {fn: int(fn[3:7]) for fn in filenames}
Out[5]: 
{'QLD2010.csv': 2010,
 'QLD2011.csv': 2011,
 'QLD2012.csv': 2012,
 'QLD2013.csv': 2013,
 'QLD2014.csv': 2014}

如果文件名不那么统一,可以使用正则表达式。表达式(\d{4})的基本意思是:精确匹配四个数字,并将匹配结果作为一个组返回。你知道吗

In [6]: import re

In [7]: {fn: int(re.search('(\d{4})', fn).group()) for fn in filenames}
Out[7]: 
{'QLD2010.csv': 2010,
 'QLD2011.csv': 2011,
 'QLD2012.csv': 2012,
 'QLD2013.csv': 2013,
 'QLD2014.csv': 2014}

关于处理CSV文件中的行,假设每一行具有相同的形式,将它们分开并不困难

In [8]: 'Ruby,440,Cooper,493'.split(',')
Out[8]: ['Ruby', '440', 'Cooper', '493']

存储数据最简单的方法是在字典中

In [18]: boys, girls = {}, {}

In [19]: girls[row[0]] = int(row[1])

In [20]: boys[row[2]] = int(row[3])

In [21]: boys
Out[21]: {'Cooper': 493}

In [22]: girls
Out[22]: {'Ruby': 440}

相关问题 更多 >

    热门问题