我有一个包含3列的文本文件:名称,年龄和语言。我要打印语言列为“ fr”的所有名称。
例如:文本文件包含制表符分隔符。
Name Age Language
Chris 23 fr
Joe 45 de
Henri 32 eng
Samuel 65 fr
所需的输出:
Chris, Samuel
这是我的代码:
import csv
with open('people.txt', 'r') as file:
names = [cols[0] for cols in csv.reader(file, delimiter="\t")]
lang = [cols[2] for cols in csv.reader(file, delimiter="\t")]
for i,row in lang:
if "fr" in row:
print(names[i])
答案 0 :(得分:1)
这应该有效。请注意,您只需要使用csv.reader
打开一次csv文件,然后遍历所有行,如果第三行是fr
,则将第一行的值附加到列表中
import csv
names = []
with open('graph.csv', 'r') as file:
reader = csv.reader(file, delimiter="\t")
next(reader)
#Iterate through all rows in csv
for row in reader:
#If the third element is fr
if row[2] == 'fr':
#Append name to names list
names.append(row[0])
print(names)
输出将为
['Chris', 'Samuel']
答案 1 :(得分:0)
如果可以使用外部模块,我将使用numpy
通过以下方式解决此任务:
import numpy as np
data = np.loadtxt('data.csv',str,delimiter='\t')
names = list(data[data[:,2]=='fr'][:,0])
print(names) #prints ['Chris', 'Samuel']
我使用numpy.loadtxt来获取str
的数组,通知它文件用制表符(\t
分隔,然后得到行,其中第2
列(从零开始计数)为fr
,然后在这些行的第0
列中获取值,即名称。