【问题标题】:invalid literal for base 10 error when converting string to integer for list in python将字符串转换为python中列表的整数时,base 10错误的无效文字
【发布时间】:2020-01-16 02:34:19
【问题描述】:
from statistics import mean


fo = open("numbers.txt","r") 

item = fo.readlines()

res = list(map(int, item))

print(res)

我的 numbers.txt 文件:

45 66 88
100 22 98

由于某种原因,我无法将此列表从字符串列表转换为整数。我需要将其设为整数,因为我需要获取文件中所有整数的平均值;我将使用 python 中的 mean 模块。我究竟做错了什么?我的代码看起来很干净。

【问题讨论】:

  • 每一行都有多个数字。 int() 只需要一个数字。
  • 您需要拆分行。 Python 无法将45 66 88 转换为一个整数。
  • 如何拆分?有 split() 函数吗?
  • Python 的 readlines() 方法将每一行读取为单个字符串。这里 45、66 和 88 不是不同的值,但它是一个字符串,如“45 66 88”。您需要使用空格(“”)将它们分开。 0-9 是 base10 的值,而 space 不是 base10 的值。

标签: python


【解决方案1】:

试试这个:

with open( "numbers.txt", "r") as fin :
    items = fin.read().split()

res = list(map(int, items))

print(res)

两大重点:

  1. 不要使用独立的open()——你很可能会忘记close()
  2. 如果您想将文件视为一个整体,那么阅读单独的行是没有意义的

【讨论】:

  • 是的,它有效,但我是学生,所以我想学习。所以在第二行;您正在使用 read() 读取文件,然后使用 split 将其拆分为不同的行,因为 python 将文本文件读取为一行,然后您使用 res 和 map 将项目转换为整数?
  • @johandfkalsa 我正在阅读整个文件,split() 会处理空格,即空格、\t\n\r 以及一些其他。你可以print items 看看我得到了什么结果。
【解决方案2】:

您需要先将值拆分为单独的整数,然后再尝试将它们转换为列表。您还需要删除 \n

from statistics import mean

fo = open("num.txt","r") 

item = fo.readlines()

res = []

for line in item: # for line of data in file
    line = line.replace('\n', '') # Remove \n
    data = line.split(' ') # Split string of numbers into individual elements in a list

    for v in data: # for each value in row
        res.append(int(v)) # append result as an integer

print(res)

[45, 66, 88, 100, 22, 98]

【讨论】:

    【解决方案3】:

    readlines会得到行列表,每一项都是一个行str,如"45 66 88"。 所以你需要先分割每一行。

    lines = fo.readlines()
    # lines is ["45 66 88", "100 22 98"]
    res = []
    for line in lines:
        res += map(int, line.split())
    # res is [45, 66, 88, 100, 22, 98]
    

    ps.不要忘记关闭文件指针fo

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 1970-01-01
      • 2015-11-05
      • 2019-01-02
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2023-03-06
      相关资源
      最近更新 更多