2012-03-17 3 views
0
私はPythonでデータをインポートするには、次のコードを使用しています

Pythonのデータのインポート

one=[] 
two=[] 
three=[] 
four=[] 
five=[] 
six=[] 
x=0 
for line in open('text.txt', 'r'): 
    if x==2: 
     column0, column1, column2, column3, column4, column5 = line.split(',') 
else: 
    column0, column1, column2, column3, column4, column5 = line.split(' ') 
    one.append(column0) 
    two.append(column1) 
    three.append(column2) 
    four.append(column3) 
    five.append(column4) 
    six.append(column5) 
    x=x+1 

このコードの輸入を、このテキストファイル:

1 2 3 4 5 6 
1 2 3 4 5 6 
1,2,3,4,5,6 
1 2 3 4 5 6 
1 2 3 4 5 6 

しかし、私はインポートする方法とそんなにトラブルを抱えています次のようになります。

1 2 3 4 5 6 
1 2 3 4 5 6 
1,2,3, 
4,5,6 
1 2 3 4 5 6 
1 2 3 4 5 6 

データに3行目の改行があっても、最初のテキストと同じ方法でインポートしますファイル。私は行ごとにインポートして、3行目の変数の数を使用してみましたが、動作させることができませんでした。

リソースや例を知っている人はいますか?ありがとう!

+0

は、常に1セットにつき6つのアイテムがあると考えられています – corn3lius

+0

私は彼が求めているものを見ていると思います。彼はそれぞれの配列に6番目の要素をロードする必要があります。 – Matt

+0

6つの要素ごとであり、6つではありません。 –

答えて

1

HERESに一つの方法が、私はそれはあなたの問題は

fh = open('Documents/import.txt').read() 

for line in fh.split('\n'): 
    print line.strip() 
    splits = line.split() 
    if len(splits) ==1 and splits[0]== line.strip(): 
     splits = [item for item in line.strip().split(',') if item] 
    print splits 

おっと...あなたはこの

を試してみたかったものを読むdidntのかもしれないものは何でも取り組むと思います
fh = open('Documents/import.txt').read() 
the_list = [] 
for line in fh.split('\n'): 
    print line.strip() 
    splits = line.split() 
    if len(splits) ==1 and splits[0]== line.strip(): 
     splits = line.strip().split(',') 
    if splits:the_list.append(splits) 

for i in range(len(the_list)): 
    print the_list[i] 
    if the_list[i][-1]=='': 
     the_list[i].pop(-1) 
     the_list[i].extend(the_list[i+1]) 
     i += 1 

print the_list 
+0

2番目のforループを追加した理由を説明してください: 'for i in range(len(the_list)): The_list [i] [ - 1] == ''の場合はthe_list [i] を出力してください: the_list [i (i-1)] i + = 1')。 – user1026987

1
  1. StackOverflowで9つの質問をして、そのうちの1つのみの回答を受け入れましたか?見知らぬ人の優しさと、accept some answersの感謝の気持ちを表してください。

  2. 「試してうまくいかない」と言っても良いですが、どうしてうまく動作しませんでしたか?エラーメッセージは何ですか?プログラムが予期せぬ動作をした場合、実際に何を期待しましたか?

  3. コンマ(スペース?)で区切られたデータを読むには、実際にはpython's csv moduleが必要だと思います。 delimiterオプションに適切な引数を指定すると、スペースで区切られたデータも読み取られます。また、データを読み取る前にスペースをカンマで置き換えることもできます。
+0

データが表形式でなく、デリミタが一貫​​していないので、 'csv'はここでは機能しません。 –

+0

'表形式でない'というのは、数字の長方形の配列ではないことを意味しますが、実際には関係ありません。 'csv'は各行を必要なだけのトークンに分割します。いくつかの行に他の行より多くのトークンがあるかどうかは関係ありません。一貫性のない区切り文字は、処理を開始する前に、処理ごとの実行で固定することができます(空白をカンマで置き換えます)。 –

+0

「表がない」とは、「1行が複数の行に分割される可能性があります」という意味です.2番目の例を参照してください。 'csv'は現在のコードと同じことを行い、それぞれ3列の2行としてデータを読み込みます。 –

1

for line in open('text.txt', 'r'):は、ファイル内の行を反復処理します。あなたのコンマには注意を払わない。

要素で行ではなく繰り返し処理する場合は、別のループを使用する必要があります。

How to read numbers from file in Python?これは、改行を無視して、一度に数値を読み取る方法を示しています。コンマや空白をスキップするには、pass a parameter to the split functionが必要です。

P.S.現在のコードでは、if x==2:は何もしません。本当に行を数えたい場合は、enumerate関数が必要です。そのない完全な答え...ラインが権利を取得する

関連する問題