【问题标题】:Get row index instead of columns in csv file获取行索引而不是csv文件中的列
【发布时间】:2012-10-22 04:21:42
【问题描述】:

首先,我只想说我是非常 Python 的新手,或者任何种类的编程。另外,我不知道该放什么作为标题,对不起。所以我打开了这个 csv 文件,然后我剥离并拆分了逗号,然后只是为了检查,我把它打印出来,它给了我这样的结果(只是一些示例数字):

['1','2','3','4']
['5','6','7','8']
['9','10','11','12']

我想知道是否有一种方法可以索引行而不是列,例如如果我尝试打印 my_list[0] 它会给我 1 5 9

而不是 ['1','2','3','4']。我的实际问题是我需要将 csv 数据转换为一行元组,其中元素转换为整数,并且能够选择任何行进行进一步处理。

我不熟悉我在这个网站上看到的很多模块。如果可能的话,我想要一个非常基本的编码帮助。(虽然有时效率很低)

谢谢!

【问题讨论】:

标签: csv python-3.x tuples


【解决方案1】:

您可以使用相当简单的列表推导将列表转换为您想要的格式(从 csv 获取列表后),使用 zip(*my_list) 转置它:

>>> my_list = [['1','2','3','4'],
...            ['5','6','7','8'],
...            ['9','10','11','12']]
>>> [[int(x) for x in row] for row in zip(*my_list)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

【讨论】:

  • 嗯,我如何从剥离/分割线制作嵌套列表?因为如果你明白我的意思,它们并不完全是“相邻”的。
  • 哦,我假设您使用的是csv 模块,它会为您提供一个可以使用的对象,例如列表列表。如果您需要手动创建列表列表,您可以将每一行的结果附加到列表中。
  • 我做了类似的事情:my_list = [],for x in file_open, x = x.strip().split(','), 然后 end_list = my_list.append(x) 但它给了我'没有'。但我会尝试使用 csv 阅读器。
  • 其实应该只是my_list.append(x),然后你会使用my_listend_list 根本不需要。但是使用csv 模块是一种更好、更简单的方法。
【解决方案2】:

此答案遵循您的 cmets 对于 stranac 提供的答案,并尝试根据需要创建 my_list

my_list = []
with open('Test.csv', 'r') as csvfile:
    for lines in csvfile:
        temp_lines = lines.strip().split(',')
        my_list.append(temp_lines)

print(my_list)

不过,我建议您使用 python 中已有的 csv 模块。 可以看一个基本的例子here

你可以这样做:

import csv
my_list = []
with open('Test.csv') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        my_list.append(row)
print(my_list)

【讨论】:

  • 哦等等,我如何得到 [1,2,3,4] 而不是 ['1','5','9']?
  • 一旦你得到 my_list,然后 print(mylist[0])
  • my_list 基本上是一个列表列表(>)。所以 my_list 的第一个元素(通过 my_list[0] 访问的将是一个包含值 [1,2,3,4] 的列表。第二个元素 my_list[1] 将是列表 [5,6, 7,8] 等等
  • 我的意思是,我需要将列表中的所有元素都更改为整数。 叹息我要求太多了。
  • 你可以稍微修改一下stranac给出的解决方案。它看起来像这样 my_list = [[int(x) for x in row] for row in my_list]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 2016-07-05
  • 2014-02-14
  • 1970-01-01
  • 2018-11-02
相关资源
最近更新 更多