读写两个文件的最佳方式?

Best way to read and write two files?

伙计们,希望获得有关处理以下任务的最佳方法的建议:
1. 从 CSV 文件中读取数据。
2. 根据第一步读取的数据编辑一个XML文件

我是一个 Python 菜鸟。到目前为止,我能够从 CSV 文件中读取数据。在我的 Java 世界中,我会简单地将 "read" 数据传递给一个方法,然后在该方法中迭代并编辑 XML 文件。
我可以在 Python 中做类似的事情吗?在 Python 中是否有更有效、更简洁的方法来实现相同目标?

import csv

ifile  = open('my-file.csv', "rb")
reader = csv.reader(ifile)

rownum = 0
for row in reader:
    #print row
    if rownum == 0:
        header = row
    else:
        colnum = 0
        name = row[1]
        desig = row[5]
        print("Name: ", name)
        print("Designation: ", desig)


    rownum += 1
    if rownum == 10:
        break

ifile.close()

与您的解决方案非常相似,只是使用 enumeratewith 而不是 openclose:

import csv

with open('my-file.csv', 'rb') as ifile:
    reader = csv.reader(ifile)
    for rownum, row in enumerate(reader):
        #print row
        if rownum == 0:
            header = row
        else:
            colnum = 0
            name = row[1]
            desig = row[5]
            print("Name: ", name)
            print("Designation: ", desig)
        if rownum == 10:
            break

您的问题不够清晰(您要找的是什么)。 无论如何,据我了解,您正在寻找一种简单的方法来读取 csv 文件并打印 ith 特定格式的列(例如 name: ... )。 我假设您的文件如下所示:

blah,Name,blahblah,blahblahblah,blahblahblahblah,Designation
whatever,name1,whatever,whatever,whatever,Designation1
whatever,name2,whatever,whatever,whatever,Designation2
whatever,name3,whatever,whatever,whatever,Designation3
whatever,name4,whatever,whatever,whatever,Designation4
whatever,name5,whatever,whatever,whatever,Designation5
whatever,name6,whatever,whatever,whatever,Designation6

如果是这样的话,那么这就是我要做的。我会使用已知的 pandas 库

import pandas as pd

将 csv 文件读入数据框 "df"

df = pd.read_csv('my-file.csv')

变量header将保存列名

header = list(df) # the equivilant of your "row[0]" variable

打印所需数据的方法一

for i, j in zip(list(df['Name'].values), list(df['Designation'].values)):
    print "Name: {} \nDesignation: {}".format(i, j)

这将打印出以下内容:

Name: name1 
Designation: Designation1
Name: name2 
Designation: Designation2
Name: name3 
Designation: Designation3
Name: name4 
Designation: Designation4
Name: name5 
Designation: Designation5
Name: name6 
Designation: Designation6

打印所需数据的方法#2

df['Name'] = df['Name'].map('Name: {}'.format)
df['Designation'] = df['Designation'].map('Designation: {}'.format)
print df[['Name', 'Designation']].head(n=10)

这将打印出以下内容:

0  Name: name1  Designation: Designation1
1  Name: name2  Designation: Designation2
2  Name: name3  Designation: Designation3
3  Name: name4  Designation: Designation4
4  Name: name5  Designation: Designation5
5  Name: name6  Designation: Designation6