python - 如何从文本文件中读取和写入整数?

标签 python python-3.x

<分区>

将值浮点到一个文件中。 当我尝试使用 .write() 时,它将输入作为字符串。 我想它真的是 Python 的基础,但我是新手。 希望你们不要对这个问题生气:D

with open('C:/Python35/sample.txt', 'w') as f:
    data = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
    for i in data:
        f.write('%d \n' % i)

with open('C:/Python35/sample.txt', 'r', encoding='utf-8') as g:
    data = g.readlines()

print(data)

如果我运行这个,我可以得到如下结果。

['70 \n', '60 \n', '55 \n', '75 \n', '95 \n', '90 \n', '80 \n', '80 \n', '85 \n', '100 \n']

它是字符串列表,而不是 int 值。 (也想知道为什么'data'列表中有'\n'!)

最佳答案

您的 sample.txt 文件的格式可能如下所示:

70
60
55
75
95
90
80
80
85
100

该文件中没有任何内容会记住您插入的值是一个整数,并且由于它是一个文本文档 (.txt),因此它也不会像这样对数字进行编码。至于 \n,每个数字都在其自己的行上,这意味着必须有一些字符表示换行符,因此 \n 换行符。

如果您查看代码中的这一行:

f.write('%d \n' %i)

您明确地在每个数字后写了 \n。如果要从文本文件中读取数字并将它们设为整数,则必须显式地将字符串值转换为其整数表示形式。您可以将该逻辑重写为:

>>> with open("sample.txt", "r", encoding="utf-8") as g:
...     data = list(map(int, g.readlines()))
... 
>>> data
[70, 60, 55, 75, 95, 90, 80, 80, 85, 100]

它将 int 类型映射到 g.readlines() 返回的列表的每个值,然后转换 map 对象再次添加到 list 中。而且,如果您想知道,int 会像您在每一行中那样忽略空格(空格和换行符)。

>>> int("70 \n")
70
>>> type(int("60 \n"))
<class 'int'>

关于python - 如何从文本文件中读取和写入整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54209929/

相关文章:

python-3.x - websocket 中接收和发送方法的区别

python-3.x - Python 3 和 Tkinter 有问题且缓慢

Python 3 异常删除封闭范围内的变量,原因不明

python - 使用 Pandas 合并数据框

python - GTK 中的剪贴板粘贴和字符插入应该捕获哪些信号?

python-3.x - 将原始 Scapy 数据解码为人类可读

python-3.x - 图中的 Axis 隐藏了 Axis 标签?

python - 连接到 wsdl 时出错?

python - 如何在 Django 的一个 HTML 页面中打开两个日志文件?

python - 无法使用套接字获取所需内容