不带标题的Python csv

问题描述 投票:0回答:4

通过 csv 文件中的标题信息,可以将城市抓取为:

city = row['city']

现在如何假设csv文件没有标题,只有1列,列是城市。

python csv
4个回答
53
投票

如果您自己声明标题,您仍然可以使用您的行,因为您知道:

with open('data.csv') as f:
    cf = csv.DictReader(f, fieldnames=['city'])
    for row in cf:
        print row['city']

有关更多信息,请查看文档中的

csv.DictReader
信息。

另一种选择是仅使用位置索引,因为您知道只有一列:

with open('data.csv') as f:
    cf = csv.reader(f)
    for row in cf:
        print row[0]

6
投票

您可以使用 pandas.read_csv() 函数,类似于 @nosklo 描述的方式,如下所示:

df = pandas.read_csv("A2", header=None)
print df[0]

df = pandas.read_csv("A2", header=None, names=(['city']))
print df['city']

0
投票

对于没有标题的 CSV 文件,并且有超过 1 列,可以在 fieldnames=[]

中按顺序添加其他列名称

背景:我有一个由主机名组成的 CSV,后跟各自的 IP。

例如

PLNXXXXA, 10.10.10.1
PLNXXXXB, 10.10.10.2

我想构建我的查找,键是IP,相应的值是主机名以丰富我的数据。下面是代码:

import csv
csv_file =r"4.1.6_lookup.csv"

# Initialize an empty lookup dictionary
lookup = {}

# Read from the CSV file and populate the lookup dictionary
with open(csv_file, 'r') as f:
    csv_reader = csv.DictReader(f,fieldnames=['hostname','IP'])
    for row in csv_reader:
        # Capitalize the hostname and remove any leading/trailing whitespaces
        hostname = row['hostname'].upper().strip()  
        lookup[row['IP']] = hostname

输出将类似于:

{'10.10.10.1': 'PLNXXXXA', '10.10.10.2': 'PLNXXXXB'}

希望这对某人有帮助。 谢谢你;)


-3
投票

我正在使用 pandas 数据框对象:

df=pd.read_sql(sql_query,data_connection)
df.to_csv(filename, header=False, index=False)

不知道这是否是最Pythonic的方法,但它完成了工作。

© www.soinside.com 2019 - 2024. All rights reserved.