使用python

时间:2016-04-22 08:55:34

标签: python list csv

我是python的新手,并试图了解如何使用csv阅读器对数据进行排序。我已经在这个网站上阅读了几个指南,但似乎与我尝试的内容没什么关系。

我有一个名为buildings.csv的csv文件,使用这样的列表数据编译:

  

[' VANGARDE MONKS CROSS',' 1292',' YO32 9AE',' GREAT BRITAIN',' Retail&# 39;,'交易','']   [' VILLAGE DOUGLAS CORK SF'' 418',' CORK','爱尔兰共和国'零售' ,'交易','']

我想知道的是,如何仅返回列表中包含单词' IRELAND'?的行目前我所要做的就是让终端从文本文件中读取输出。

4 个答案:

答案 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返回参数所在的数据帧是的。