读写两个文件的最佳方式?
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()
与您的解决方案非常相似,只是使用 enumerate
和 with
而不是 open
和 close
:
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
伙计们,希望获得有关处理以下任务的最佳方法的建议:
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()
与您的解决方案非常相似,只是使用 enumerate
和 with
而不是 open
和 close
:
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