如何从csv读取几行

路易斯·拉蒙·拉米雷斯·罗德里格斯

我有一个csv文件,其中包含名称和电话号码。我只有在拥有电话号码的情况下才对名称感兴趣。

with open(phone_numbers) as f:
    reader = csv.DictReader(f)
    names =  [record['Name'] for record in reader if record['phone']]

但是我也想要各自的电话号码,我已经尝试过了:

user_data = {}
with open(phone_numbers) as f:
    reader = csv.DictReader(f)
    user_data['Name'] =  [record['Name'] for record in reader if record['phone']]
    user_data['phone'] = [record['phone'] for record in reader if record['phone']]

但是对于第二个项目,我有一个空字符串,我猜这record是一个生成器,这就是为什么我可以对其进行两次迭代的原因。

我尝试使用元组,但仅以这种方式工作:

user_data = {}
with open(phone_numbers) as f:
    reader = csv.DictReader(f)
    user_data['Name'] =  [(record['Name'],record['phone']) for record in reader if record['phone']]

在那种情况下,我有两个变量,phoneName存储在中user_data['Name'],这不是我想要的。

如果我尝试这样做:

user_data = {}
with open(phone_numbers) as f:
    reader = csv.DictReader(f)
    user_data['Name'],user_data['phone'] =  [(record['Name'],record['phone']) for record in reader if record['phone']]

我收到以下错误:

ValueError: too many values to unpack

编辑:

这是表的示例:

+ -------- + --------------- +
| 电话| 编号|
+ -------- + --------------- +
| 路易斯| 000 111 22222 |
+ -------- + --------------- +
| 保罗| 000 222 3333 |
+ -------- + --------------- +
| 安德里亚| |
+ -------- + --------------- +
| 豪尔赫| 111 222 3333 |
+ -------- + --------------- +

因此,所有行都具有名称,但并非所有行都具有电话。

苯乙烯

您可以dict用来将元组列表转换为字典。get如果您的记录没有phone价值,也需要使用

import csv

user_data = {}
with open(phone_numbers) as f:
    reader = csv.DictReader(f)
    user_data = dict([(record['Name'], record['phone']) for record in reader if record.get('phone').strip())

如果要分别列出names和phones,则可以使用* 表达式

with open(phone_numbers) as f:
    reader = csv.DictReader(f)
    names, phones = zip(*[(record['name'], record['value']) for record in reader if record.get('phone').strip()])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从csv读取几行

来自分类Dev

读取.csv文件中的几行

来自分类Dev

如何读取跳过描述(跨越几行)进入数据框的csv文件?

来自分类Dev

如何从CSV文件中删除最后几行

来自分类Dev

如何读取压缩的CSV文件?

来自分类Dev

如何读取无标题的CSV

来自分类Dev

如何循环读取CSV文件?

来自分类Dev

如何从tar文件中的csv文件中提取前几行而不在Linux中提取它?

来自分类Dev

如何将csv行中的每个字符串分隔为几行

来自分类Dev

C#用StreamReader读取几行?

来自分类Dev

如何选择运行总计的几行

来自分类Dev

如何对几行的列值求和?

来自分类Dev

如何从文件grep以下几行?

来自分类Dev

如何从CSV文件读取可读的内容?

来自分类Dev

如何部分读取巨大的CSV文件?

来自分类Dev

读取CSV文件时如何跳过列?

来自分类Dev

如何读取压缩的CSV文件的特定列

来自分类Dev

如何读取大型csv文件的特定行

来自分类Dev

如何使用netlogo读取.CSV文件?

来自分类Dev

如何在R中读取单行CSV?

来自分类Dev

如何读取多个csv文件并绘制直方图

来自分类Dev

如何读取csv文件并呈现UI?

来自分类Dev

如何从R中的url读取csv文件?

来自分类Dev

如何使用Apache文件读取CSV文件?

来自分类Dev

如何读取从GoogleDrive选择的csv文件

来自分类Dev

如何从CSV文件读取多个记录?

来自分类Dev

如何使JMeter从csv读取唯一值

来自分类Dev

Python:如何高效读取.csv文件?

来自分类Dev

如何从CSV文件读取可读的内容?