Python初学者:如何使#1文本看起来像文本#2

时间:2018-05-26 15:50:42

标签: python-3.x

我正在尝试创建一个循环,它将格式化,空格和对齐第一个文本以匹配第二个文本。我从txt文件输入文本1,我希望它将文本2输出到txt文件中。语法应打印文本#2,第3列求和。

文字#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')

1 个答案:

答案 0 :(得分:0)

尝试纠正三件事:

  1. 使用字符串方法rjust(右对齐)来对齐列。它为字符串的开头添加了额外的空格。

  2. 阅读完成后,请务必关闭文件。或者使用with语法(参见下面的代码示例),因为它在退出with块后自动关闭文件。

  3. 使用file.write将行写入文件

  4. 查看csv module& pandas library因为它们提供了高级数据和文件处理技术。

  5. 从文件中读取的示例代码&写入新文件:

    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')