2016-09-06 12 views
-2

次のタスクに対処するための最良の方法をご提案します。
1. CSVファイルのデータを読み込みます。
2.手順1で読み込んだデータに基づいてXMLファイルを編集します。2つのファイルを読み書きする最も良い方法は?

私はPythonのnoobです。これまで私はCSVファイルからデータを読み取ることができました。私のJavaの世界では、単に「読み込み」データをメソッドに渡して、そのメソッドで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() 
+0

あなたのコード内の問題は何ですか? – SumanKalyan

+0

上記のコードに問題はありません。私が求めているのは、メソッドを定義して引数を渡す方法です。それが正しいアプローチであれば。 – user1195192

+0

「私が求めているのは、メソッドを定義して引数を渡す方法です。真剣に?チュートリアルを読む。 –

答えて

0

、だけではなく、opencloseenumeratewithを使用しています:

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 
+0

enumerateを使用して開いて閉じるの利点は何ですか? – user1195192

+1

'enumerate'は、インデックスカウンタを宣言してインクリメントしなくて済むようにする組み込み関数です。 'with'はあなたのファイルを閉じることを心配する必要がないので便利です - プログラムがあなたの' file.close() 'に実行されないときにエラーが発生した場合でもファイルは閉じられます。 –

2

あなたの質問は(それはあなたが求めていることは何か)明確に少し欠けています。 とにかく、私が理解したものから、あなたはCSVファイルを読み込み、および特定の書式(例えば名前:...)に番目列を印刷するための簡単な方法を探しています。 私はあなたのファイルは、以下のようになっていることを想定しています:その場合は

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 

、そしてここで私はどうなるのかです。私は、変数ヘッダが列名

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

方法#1のを保持するデータフレーム "DF"

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

にcsvファイルを読む

import pandas as pd 

を知られているパンダのライブラリを使用します必要なデータを印刷する

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

これは、次を出力:必要なデータ以下をプリントアウトします

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

を印刷する

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:

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 
関連する問題