繁体   English   中英

通过读取文件将特定值存储在列表中

[英]Storing specific values in a list by reading a file

我有以下格式的文件:

name | age | gender
abc  |  4  |  M
xyz  |  5  |  F
pqr  |  6  |  M
stu  |  5  |  F

这是CSV文件,因此名称,年龄和性别是单独的行。

我正在尝试将年龄的值存储在列表中,并计算相似年龄的出现。

就像是:

age_list = [4,5,6,5] 

以及每个元素的发生。 我想我知道该怎么做发生部分,我不能做的是将年龄值存储在列表中。

为了清楚的理解,我只发布了文件的一小部分。 该文件实际上具有大量数据。

我只是到了以读取模式打开文件并执行以下操作的地步:

data = [line.strip() for line in file.readlines()]

我试图搜索类似的查询,但找不到它。 我是这个网站的新手,所以我真的不知道规则或准则。

如果您有CSV格式的文件,并且想要使用csv库:

import csv
from collections import Counter

with open('csvfile.csv', 'r') as csvfile:
    data = csv.reader(csvfile, delimiter=',')
    next(data, None) # Ignore headers
    results = Counter([x[1] for x in data])
    print results

如果您不想导入csv并且您在字符串变量中包含数据,这可能会有所帮助:

from collections import Counter

data = """name | age | gender
abc  |  4  |  M
xyz  |  5  |  F
pqr  |  6  |  M
stu  |  5  |  F"""

cleaned_data = Counter([x.split('|')[1].strip() for x in data.split('\n')[1:]])
print cleaned_data

两个示例的输出相同:

{
    '5': 2,
    '4': 1,
    '6': 1
}

您可以使用csv阅读器或其他类似panda和numpy的库,但是如果您只想使用python,这就是方法! 无需导入任何额外的东西

In [24]: ages = []
In [25]: with open("data.csv","r") as f:
   ....:     ages+=f.read().splitlines()
   ....:
In [26]: ages
Out[26]: ['name,age,gender', 'abc,4,M', 'xyz,5,F', 'pqr,6,M', 'stu,5,F']
In [27]: ages=[s.split(",")[1] for s in ages][1:] #all second cols(ages),except the first row
In [28]: ages
Out[28]: ['4', '5', '6', '5']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM