在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:
????
答案 0 :(得分:2)
你可以像这样构建,
text = open(file_name).read()
lst = text.split('\n')
print [list(i+' '*(len(max(lst))-len(i))) for i in lst]
获取lst
中的最小值,并获取当前值的替代值,并获取加号' '
字段,
<强>结果强>
[['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填充字符串来构建你的数组,因此对于每个特定的行,可能看起来像
modified_line = "{:{max_len}}".format(original_line, max_len)
这将在original_line
长(左对齐)的字符串中填充max_len
。 format
函数的语法可能有点棘手,所以我给你一个良好的开端,但其余的很简单,我会留给你。
答案 2 :(得分:0)