2016-09-07 17 views
0

空白とコロンを含む数字の束を持つファイルがありますが、それらを削除しようとしています。私がこのフォーラムで見たように、これを実現するには、関数line.strip.split()がうまく機能します。ホワイトスペースとコロンを一度に取り除く方法はありますか?私はこのエラーが出るものの空白とコロンの削除

train = [] 
with open('C:/Users/Morgan Weiss/Desktop/STA5635/DataSets/dexter/dexter_train.data') as train_data: 
    train.append(train_data.read().replace(' ','').replace(':','')) 
size_of_train = np.shape(train) 
for i in range(size_of_train[0]): 
    for j in range(size_of_train[1]): 
     train[i][j] = int(train[i][j]) 
print(train) 

:私はこれを持っているロレンツォによって投稿方法を使用して

File "C:/Users/Morgan Weiss/Desktop/STA5635/Homework/Homework_1/HW1_Dexter.py", line 11, in <module> 
    for j in range(size_of_train[1]): 
IndexError: tuple index out of range 
+4

まあ...あなたは有効なpython構文を使用していません! Pythonのチュートリアルを手に入れ、ループ構文を学んでください。 **あなたがこれをした後、リスト内包を見てください。 – sascha

+0

これは有効な構文ではありません!リストの理解を見てください。 – Li357

+0

よろしくお願いいたします。この質問を削除していただきありがとうございます。 –

答えて

1

を私は上記の構文が正しくないと思いますが、とにかくあなたの質問ごとに、あなたは交換してください使用することができます関数はPythonに存在します。ここで

あなたのような何かを行うことができ、そのファイルから文字列として各行を読ん

train = [] 
with open('/Users/sushant.moon/Downloads/dexter_train.data') as f: 
    list = f.read().split() 
    for x in list: 
     data = x.split(':') 
     train.append([int(data[0]),int(data[1])]) 

# this part becomes redundant as i have already converted str to int before i append data to train 
size_of_train = np.shape(train) 
for i in range(size_of_train[0]): 
    for j in range(size_of_train[1]): 
     train[i][j] = int(train[i][j]) 

私は空の文字列とスペースを交換する機能を置き換える使用して、コロンと類似しています。

+0

あなたの方法を試しましたが、このエラーが発生します:train.append(train_data.replace( ''、 '')。 AttributeError: '_io.TextIOWrapper'オブジェクトに 'replace'属性がありません –

+0

私の編集した質問が表示されますか? –

+0

はい、私は私の答えを編集しました、試してみてください。 – lorenzofeliz

0

入力ファイルがどのようなものであるかの例を提示していないため、必要な解決策しか推測できません。私はあなたの入力テキストファイルから整数を抽出し、それらの値を出力する必要があると仮定します。ここで

は、私はそれを行うだろう方法は次のとおりです。

  • 代わりに空白文字とコロンを排除しようとしているのは、私はregular expression
  • 連続した数字を使用して数字を検索しますが、私は希望数
  • を構成するであろうこの数値を整数形式に変換します。

    import re 
    
    input_filename = "/home/evens/Temporaire/Stack Exchange/StackOverflow/Input_file-39359816.txt" 
    
    matcher = re.compile(r"\d+") 
    
    with open(input_filename) as input_file: 
        for line in input_file: 
         for digits_found in matcher.finditer(line): 
          number_in_string_form = digits_found.group() 
          number = int(number_in_string_form) 
          print(number) 
    

    しかし、あなたは離れて、このコードを実行する前に、あなたはまだその基本的な要素を把握していないようですので、Pythonのを学ぶために継続すべきである:

そして、ここでは、それは次のようになり方法です。

+0

Pythonをどのように学びますか? –

+0

[公式チュートリアル](https://docs.python.org/3.5/tutorial/index.html)から始めましょう。 – EvensF

+0

私はMatlabを使い、次にC++に行きました。私はPythonがかなり簡単だと考えていたと思った。 –