我是python的新手,并试图了解如何使用csv阅读器对数据进行排序。我已经在这个网站上阅读了几个指南,但似乎与我尝试的内容没什么关系。
我有一个名为buildings.csv的csv文件,使用这样的列表数据编译:
[' VANGARDE MONKS CROSS',' 1292',' YO32 9AE',' GREAT BRITAIN',' Retail&# 39;,'交易',''] [' VILLAGE DOUGLAS CORK SF'' 418',' CORK','爱尔兰共和国'零售' ,'交易','']
我想知道的是,如何仅返回列表中包含单词' IRELAND'?的行目前我所要做的就是让终端从文本文件中读取输出。
答案 0 :(得分:0)
我认为你必须遍历行。也许是这样的?
l = [['VANGARDE MONKS CROSS', '1292', 'YO32 9AE', 'GREAT BRITAIN', 'Retail', 'Trading', ''], ['VILLAGE DOUGLAS CORK SF', '418', 'CORK', 'REPUBLIC OF IRELAND', 'Retail', 'Trading', '']]
for row in l:
if any("IRELAND" in s for s in row):
print "match"
答案 1 :(得分:0)
如果您只想打印线条,这是一种简单的方法:
with open('buildings.csv', 'r') as f:
for line in f:
if(line.find("IRELAND")!=-1):
print(line)
答案 2 :(得分:0)
如果您想保持简单,只需在从CSV中读取行时过滤行:
with open('buildings.csv', 'rb') as csvfile:
csv_reader = csv.reader(csvfile)
for row in csv_reader:
if any("IRELAND" in s for s in row):
print ', '.join(row)
但是,通常使用Pandas或类似的库进行过滤,排序,旋转等可以节省大量时间。
答案 3 :(得分:0)
虽然你说你不想使用pandas
,但这里有一个解决方案,可能需要进一步参考:
>>> import pandas as pd
>>> l = [['VANGARDE MONKS CROSS', '1292', 'YO32 9AE', 'GREAT BRITAIN', 'Retail', 'Trading', ''],
['VILLAGE DOUGLAS CORK SF', '418', 'CORK', 'REPUBLIC OF IRELAND', 'Retail', 'Trading', '']]
>>> df = pd.DataFrame(l) # you can read a file here as well
>>> new_df = df.loc[df[3].apply(lambda x: "IRELAND" in x)]
>>> new_df
0 1 2 3 4 5 6
1 VILLAGE DOUGLAS CORK SF 418 CORK REPUBLIC OF IRELAND Retail Trading
df[3].apply(lambda x: "IRELAND" in x)
充当过滤器:它返回一个布尔向量,其中True
表示{3}在第3列的行中。IRELAND
返回参数所在的数据帧是的。