开发者社区> 问答> 正文

如何从文本文件中读取和写入整数?[重复]

将值浮动到文件中。当我尝试使用.write()时,它将输入作为字符串。

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值。(还想知道为什么'数据'列表中有' n'!)

展开
收起
一码平川MACHEL 2019-01-18 10:26:35 3146 0
1 条回答
写回答
取消 提交回答
  • 你可能有你的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对象转换为a list。并且,如果您想知道,请int忽略每行中的空格(空格和换行符)。

    int("70 n")

    70

    type(int("60 n"))

    2019-07-17 23:25:49
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载