python - 使用python读取csv文件并将内容存储在数组中
问题描述
我有如下 CSV 文件:
aa , a1, 1, bb, b1, 11, cc, c1, 111
aa2 , a2, 2, bb2, b2, 22, cc2, c2, 222
aa3 , a3, 3, bb3, b3, 33, cc3, c3, 333
我需要获取前三个内容并将其存储在数组中,例如:
aa , a1, 1, bb, b1, 11, cc, c1, 111
将变为['aa a1 1', 'bb b1 11', 'cc c1 111']
这是我的代码:
import csv
with open('Test.csv') as csv_file:
csv_reader = csv.reader(csv_file)
rows = list(csv_reader)
lines= len(list(rows))
for line in range(lines):
i=0
j=1
k=2
for l in range(len(list(rows[line]))):
t=[]
t.append(rows[line][i]+rows[line][j]+rows[line][k])
print(t[0:])
i+=3
j+=3
k+=3
解决方案
使用for
-loops,通常最好直接迭代项目,使用例如for row in rows:
,而不是索引,使用例如for line in range(lines):
。
另外,请注意,每次调用 时list
,您都在构建一个新列表。这可能很浪费。例如,lines = len(list(rows))
构建一个不必要的 list 副本rows
。你可以简单地写nb_lines = len(rows)
.
由于您想将列表分成 3 块,因此您可能有兴趣阅读以下内容:
import csv
t = []
with open('Test.csv') as csv_file:
for row in csv.reader(csv_file):
t.append([' '.join(row[i:i+3]) for i in range(3)])
print(t)
# [['aa a1 1', ' a1 1 bb', ' 1 bb b1'],
# ['aa2 a2 2', ' a2 2 bb2', ' 2 bb2 b2'],
# ['aa3 a3 3', ' a3 3 bb3', ' 3 bb3 b3']]
我们可以摆脱看起来不好的额外空格,使用str.strip
:
import csv
t = []
with open('Test.csv') as csv_file:
for row in csv.reader(csv_file):
t.append([' '.join([word.strip() for word in row[i:i+3]]) for i in range(3)])
print(t)
# [['aa a1 1', 'a1 1 bb', '1 bb b1'],
# ['aa2 a2 2', 'a2 2 bb2', '2 bb2 b2'],
# ['aa3 a3 3', 'a3 3 bb3', '3 bb3 b3']]
推荐阅读
- ruby-on-rails - Ruby 模块包含的钩子而不是常规扩展?
- wordpress - wordpress 网站上的图片链接损坏
- react-native - 访问“useEffect”中的变量而不在更新时触发效果
- c++ - 如何声明指向成员内容 m_pmd/m_pmf 的成员指针并访问它们?
- javascript - React:在数组中查找字符串并重命名
- wordpress - WooCommerce - 添加对象术语无法正常工作
- css - css下划线文本仅箭头居中
- android - 不同的模块文件按风味
- php - 为什么 $ids 在 whereHas() 的回调中不可见?
- reactjs - 如何将 API 数据返回到单独的组件 - React Native