Python 试图以不同格式输出到另一个文件
尝试输入文本文件(文本#1)并以以下格式输出到另一个文本文件(文本#2)。遇到错误。我是Python新手,如果有任何帮助,我将不胜感激 正文#1 正文#2 到目前为止,我所拥有的:Python 试图以不同格式输出到另一个文件,python,Python,尝试输入文本文件(文本#1)并以以下格式输出到另一个文本文件(文本#2)。遇到错误。我是Python新手,如果有任何帮助,我将不胜感激 正文#1 正文#2 到目前为止,我所拥有的: inputfilename= input('Enter sales file name: ') outputfilename=input('Enter name for total sales file: ') with open(inputfilename, 'r') as i, open(outputfilen
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')
当我点击run时出现以下错误:
fst_sale, lst_sale = line.split(' ')
ValueError: not enough values to unpack (expected 2, got 1)
错误消息确切地告诉您出了什么问题:您尝试在“”处拆分一行并将其分解为两部分,但只得到了一部分。明智的做法是设置一个断点并检查行,或者取消对拆分的注释,而是打印它以检查它 如果您的行包含2个部分,您可以在实际将其分解为2个部分之前进行测试,以避免该错误:
with open(inputfilename, 'r') as i, open(outputfilename, 'w') as o:
for line in i:
if len(line.split(" ")) == 2: # only do it if you can split in 2 parts
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')
阅读和跟随-这将使您能够解决自己的问题。Read and follow-您的文件前面/结尾可能有一些空行,这些行是已阅读的,不能分解为两部分,因为它没有两部分。@jpp同一作者,同一代码,其他问题-无重复。只是缺少努力解决自己的问题。
fst_sale, lst_sale = line.split(' ')
ValueError: not enough values to unpack (expected 2, got 1)
with open(inputfilename, 'r') as i, open(outputfilename, 'w') as o:
for line in i:
if len(line.split(" ")) == 2: # only do it if you can split in 2 parts
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')