fp = open ('data.txt','r')
saveto = open('backup.txt','w')
someline = fp.readline()
savemodfile = ''
while someline :
temp_array = someline.split()
print('temp_array[1] {0:20} temp_array[0] {0:20}'.format(temp_array[1], temp_array[0]), '\trating:', temp_array[len(temp_array)-1]))
someline = fp.readline()
savemodfile = temp_array[1] + ' ' + temp_array[0] +',\t\trating:'+ temp_array[10]
saveto.write(savemodfile + '\n')
fp.close()
saveto.close()
输入文件:data.txt包含此模式的记录:firstname姓氏年龄地址
我希望backup.txt具有以下格式:姓氏名字地址年龄
如何以格式化的方式将数据存储在backup.txt中?我想我应该以某种方式使用format()方法......
我使用代码中的print对象向您展示我目前对format()的理解。当然,我没有得到预期的结果。
答案 0 :(得分:0)
回答你的问题:
您确实可以在字符串模板上使用.format()
方法,请参阅文档https://docs.python.org/3.5/library/stdtypes.html#str.format
例如:
'the first parameter is {}, the second parameter is {}, the third one is {}'.format("this one", "that one", "there")
将输出:'the first parameter is this one, the second parameter is that one, the third one is there'
您的情况似乎没有正确使用format()
:'temp_array[1] {0:20} temp_array[0] {0:20}'.format(temp_array[1], temp_array[0])
会输出类似'temp_array[1] Lastname temp_array[0] Lastname '
的内容。那是因为{0:20}会将第一个参数输出到format()
,右边用空格填充到20个字符。
此外,您的代码还有许多需要改进的地方。我猜你正在学习Python,这是正常的。这是一个功能等效的代码,可以生成您想要的输出,并充分利用Python的功能和语法:
with open('data.txt', 'rt') as finput, \
open('backup.txt','wt') as foutput:
for line in finput:
firstname, lastname, age, address = line.strip().split()
foutput.write("{} {} {} {}\n".format(lastname, firstname, address, age)
答案 1 :(得分:0)
此代码将在屏幕和输出文件中为您提供格式化输出
fp = open ('data.txt','r')
saveto = open('backup.txt','w')
someline = fp.readline()
savemodfile = ''
while someline :
temp_array = someline.split()
str = '{:20}{:20}{:20}{:20}'.format(temp_array[1], temp_array[0], temp_array[2], temp_array[3])
print(str)
savemodfile = str
saveto.write(savemodfile + '\n')
someline = fp.readline()
fp.close()
saveto.close()
但是这不是一个处理文件的非常好的代码,请尝试使用以下模式:
with open('a', 'w') as a, open('b', 'w') as b:
do_something()
请参阅:How can I open multiple files using "with open" in Python?
答案 2 :(得分:0)
fp = open ('data.txt','r')
saveto = open('backup.txt','w')
someline = fp.readline()
savemodfile = ''
while someline :
temp_array = someline.split()
someline = fp.readline()
savemodfile = '{:^20} {:^20} {:^20} {:^20}'.format(temp_array[1],temp_array[0],temp_array[3],temp_array[2])
saveto.write(savemodfile + '\n')
fp.close()
saveto.close()