2017-02-08 11 views
0

は、私はこのようなファイルがあります:Pythonの文字単位でファイルを読み込む方法は? Pythonで

foo 
fo 
f 
foo 
foooo 

をそして私のような行列にそれを読みたい:個々のリストは同じ長さになるように

[['f', 'o', 'o', ' ', ' '], 
['f', 'o', ' ', ' ', ' '], 
['f', ' ', ' ', ' ', ' '], 
['f', 'o', 'o', ' ', ' '], 
['f', 'o', 'o', 'o', 'o']] 

、その長さ最も長いリストの長さで、その長さに達するためのスペースで埋められます。ここで

は、これまでの私のコードです:

with open('data.txt', 'r') as myfile: 
    data=myfile.read() 

for c in data: 
    ???? 
+2

をあなたのコードは何ですか? :) – mmenschig

+0

私はまだこれを行うコードを書こうとしていませんでした。私はどこから始めるべきか分かりません。 –

+1

ヒントは次のとおりです。最も長い文字列(ファイルから)の長さを知る必要があります。 – synchronizer

答えて

2

あなたがこのように構築することができ、

text = open(file_name).read() 
lst = text.split('\n') 
print [list(i+' '*(len(max(lst))-len(i))) for i in lst] 

lstでmaimumのレンスの谷を取得し、現在の谷とsubstarcted値を取得し、取得しますaddup ' 'フィールド、

結果

[['f', 'o', 'o', ' ', ' '], 
['f', 'o', ' ', ' ', ' '], 
['f', ' ', ' ', ' ', ' '], 
['f', 'o', 'o', ' ', ' '], 
['f', 'o', 'o', 'o', 'o']] 
+1

これは私のために働いた!本当にありがとう! –

0

ご存知のように、最初のステップは、最大長の文字列を見つけることです:

with open("file.txt", 'r') as f: 
    lines = f.readlines() 
    max_len = max(map(len,lines)) 

あなたがこれをしたら、あなたはformat() functionで文字列をパディングして、アレイを構築するため、それぞれの特定のためにすることができます長いmax_lenある文字列内

modified_line = "{:{max_len}}".format(original_line, max_len) 

この意志パッドoriginal_lineのように見えるかもしれませんライン、(左揃え)。 format関数の構文はちょっと難しいかもしれないので、私はあなたにそれを頭から始めましたが、残りは単純で、私はあなたに残します。

0

ショートソリューションmaxstr.ljust機能使用:

with open('data.txt', 'r') as myfile: 
    lines = myfile.readlines() 
    max_len = len(max(lines, key=len)) 
    result = [list(l.ljust(max_len, ' ')) for l in lines] 

print(result)