gpt4 book ai didi

python - 将包含数字的文件复制到另一个文件,并将这些数字四舍五入

转载 作者:太空宇宙 更新时间:2023-11-03 21:43:54 33 4
gpt4 key购买 nike

我正在学习 python 并尝试将带有数字的文件复制到另一个文件,但这些数字四舍五入(整数)。

源文件是fichiernombre.rtf并且有3个数字:

14.896
7894.6
132.278

收件人文件为fichiernombre1.rtf

为此,我使用以下脚本。

def valArrondie(ch):
f = float(ch)
e = int(f + .5)
return str(e)

fisource = input("Nom du fichier à traiter : ")
fidest = input("Nom du fichier destinataire : ")
fs = open(fisource, 'r')
fd = open(fidest, 'w')

while 1:
ligne = fs.readline()
if ligne == "" or ligne == "\n":
break
ligne = valArrondie(ligne)
fd.write(ligne + "\n")

fd.close()
fs.close()

我尝试了其他方法,但这个方法应该是书中正确的方法。但是,我得到了这个:

Drive/formation/python/exercice_95_arrondis.py", line 17, in <module> ligne = valArrondie(ligne)
File "/Users/xxxxx/Google
Drive/formation/python/exercice_95_arrondis.py", line 3, in valArrondie
f = float(ch)
ValueError: could not convert string to float:'{\\rtf1\\ansi\\ansicpg1252\\cocoartf1561\\cocoasubrtf600\n'

我真的不明白。你有解决办法吗?

最佳答案

Python 脚本逐行读取文件,每行读取一个字符串。然后,它将每个字符串传递给 valArrondie(ch) 函数,然后该函数尝试从该字符串创建一个 float (float(ch))。

此操作失败,因为文件实际上包含无法转换为 float 的行。

原因是您正在使用输入文件的文件格式,其中包含文件中的元信息(正如 Mike Scotty 在评论中指出的那样)。 .rtf 代表富文本格式。它“丰富”,因为它可以包含元信息,例如格式,而不是仅包含原始文本字符而不包含其他内容的纯文本文件。

确保将输入文件保存为纯文本文件。您可以通过使用 less 之类的命令在终端中查看文件来验证这一点。

因此,当执行 less fichiernombre.rtf 时,您应该看到如下内容:

14.896
7894.6
132.278

不是这样的:

{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0

\f0\fs24 \cf0 14.896\
7894.6\
132.278}

关于python - 将包含数字的文件复制到另一个文件,并将这些数字四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52643566/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com