2017-10-22 10 views
0

の各行内のすべての第五文字の後にスペースを挿入し、それはのように思える:私はそれをお聞きしたかった私はPythonでテキストファイル(500行)を読んでいるテキストファイル

File Input: 
0082335401 
0094446049 
01008544409 
01037792084 
01040763890 

がそれです各行の第五文字の後にスペースを挿入することが可能:私はコード

st = " ".join(st[i:i + 5] for i in range(0, len(st), 5)) 

の下に試してみました

Desired Output: 
00823 35401 
00944 46049 
01008 544409 
01037 792084 
01040 763890 

が、

00823 35401 
0094 44604 9 
010 08544 409 
0 10377 92084 
0104 07638 90 

私はPythonの初心者です。どんな援助も差をつけるだろう。

+0

これはPython 2.7ですか?あなたは 'range()'を 'xrange()'よりも使用しているようです。 – Jerrybibo

+0

はい、私はpythonを使用しています。2.7.5 –

答えて

0

ここに2つの問題があるようです - 提供されたコードを実行すると、ファイルを1つの文字列に読み込んでいるようです。それは以下のように、文字列のリストとしてでファイルを読むために(あなたのケースでは)非常に望ましいだろう(と仮定すると、入力ファイルinput_data.txtです):

# Initialize a list for the data to be stored 
data = [] 

# Iterate through your file to read the data 
with open("input_data.txt") as f: 
    for line in f.readlines(): 
     # Use .rstrip() to get rid of the newline character at the end 
     data.append(line.rstrip("\r\n")) 

その後、あなたはで得られたデータを操作しますリストを使用すると、使用しようとしているものと同様のリストの理解度を使用することができます。

# Assumes that data is the result from the above code 
data = [i[:5] + " " + i[5:] if len(i) > 5 else i for i in data] 

希望がこれを助けました!

+0

ありがとうございました。しかし、データを印刷しようとしたときに私のガイドとしてコンテンツを実装した後に出力されます: [] –

+0

@ user8815323スニペットを1つのファイルにまとめて実行します。また、データファイルの名前が 'input_data.txt'であることを確認してください。 – Jerrybibo

+0

ここでは、11桁の文字列を5桁と6桁のグループに変換しようとしています。私のファイルには10桁の数字はほとんどありません。 –

0

次の簡易版を使用できるよりも、あなたの唯一の要件は、5番目の文字の後にスペースを挿入する場合:5文字未満を持つ行がでスペースを取得する場合、あなたが気にしない場合は

#!/usr/bin/env python 

with open("input_data") as data: 
    for line in data.readlines(): 
     line = line.rstrip() 
     if len(line) > 5: 
      print(line[0:5]+" "+line[5:]) 
     else: 
      print(line) 

をif-else-statementを省略し、if節のprint-functionを省略することもできます。

#!/usr/bin/env python 

with open("input_data") as data: 
    for line in data.readlines(): 
     line = line.rstrip() 
     print(line[0:5]+" "+line[5:]) 
+0

Ups。ありがとう、それを修正しました。 – Dunedan

+0

確かに、4番目または5番目の文字の後にスペースを入れるべきかどうかという質問は明確に述べていません。とにかく、調整するのは簡単です。 – Dunedan

+0

また、 'else'節の中で、あなたが必要でないことが分かっている場合、なぜスライスするのでしょうか?そしてリストスライシング内の「0」は冗長である。 – Jerrybibo

関連する問題