python-3.x - Python 初学者:如何使文本 #1 看起来像文本 #2
问题描述
我正在尝试创建一个循环,该循环将格式化、空格和对齐第一个文本以匹配第二个文本。我正在从 txt 文件输入文本 1,我希望它将文本 2 输出到 txt 文件中。语法应该打印文本 #2 并与第三列相加。
文本1
$1120.47 $944.42
$72.29 $588.23
$371.21 $2183.84
文字#2
$ 1120.47 $ 944.42 $ 2064.89
$ 72.29 $ 588.23 $ 660.52
$ 371.21 $ 2183.84 $ 2555.05
这就是我到目前为止所拥有的......你可以说这只是我第二周写 python。:) 任何帮助将不胜感激。
inputfilename= input('Enter sales file name: ')
outputfilename=input('Enter name for total sales file: ')
infile=open(inputfilename, "r")
outfile=open(outputfilename, "w")
salessequence=infile.readlines()
for sale in salessequence:
splitsale=sale.strip().split(" ")
firstsale=splitsale[0]
lastsale=splitsale[1]
dollarsign1=firstsale[0:1]
firstsale2=firstsale[1:]
lastsale2=lastsale[1:]
total=firstsale2 + lastsale2
print(total, file=outfile)
infile.close()
outfile.close()
print('All finished')
解决方案
在您的尝试中要纠正三件事:
使用字符串方法
rjust
(右对齐)对齐列。它在字符串的开头添加了额外的空格。读写完成后总是关闭文件。或者使用 with 语法(参见下面的代码示例),因为它会在退出 with 块后自动关闭文件。
用于
file.write
将行写入文件
从文件读取并写入新文件的示例代码:
inputfilename= input('Enter sales file name: ')
outputfilename=input('Enter name for total sales file: ')
with open(inputfilename, 'r') as i, open(outputfilename, 'w') as o:
for line in i:
fst_sale, lst_sale = line.split(' ')
fst_sale = float(fst_sale[1:])
lst_sale = float(lst_sale[1:])
tot_sale = fst_sale + lst_sale
new_line = ''.join(
['$' + str(x).rjust(10)
for x in [fst_sale, lst_sale, tot_sale]]
)
o.write(new_line + '\n')
推荐阅读
- alibaba-cloud - 如何在阿里云直邮中批量上传收件人列表?
- react-native - 图标不起作用
- javascript - .on('mouseover') 没有反馈信息
- javascript - 箭头函数可以作为repeat()的参数传递吗?
- c# - 自定义滚动条滚动触发 AutoScroll 滚动条
- javascript - 试图让 TinyMCE dom.replace 在 WordPress 中工作
- microservices - 为我的微服务实现请求级缓存
- rest - 将 HTTP 重定向到 HTTPS 会丢失数据?
- exception-handling - 与java连接时出现SQLException错误
- java - 从可为空的列表创建 Java 8 流