如何从文件中读取并将其作为整数放入列表中?蟒

时间:2015-05-02 05:37:39

标签: python list file

这就是我所拥有的

file = open("numberlist.txt")
list = []
for line in file:
      line = line.strip()
      list.append(line)

我会将每行转换为文件中for行的整数:我该怎么做?

可选:如果numberlist.txt中有非数字字符?我该如何测试并且必须编程告诉我文件不正确?

3 个答案:

答案 0 :(得分:3)

如果每行都有一位数字,您可以直接使用file-objectmap功能:

with open("numberlist.txt") as f:
     num_list=map(int,f)

注意:永远不要使用python内置名称作为变量名称,也可以使用with语句打开文件。

  

with语句用于使用上下文管理器定义的方法包装块的执行。

详细了解with语句及其使用优势。 https://docs.python.org/2/reference/compound_stmts.html

但是如果你的文件中有非数字字符,那么你的文件看起来就像exception-handling那样可以用try-except语句来完成。

因此,如果我们假设您可以在每行中有一个单词(包含数字或字符)

num_list=[]
with open("numberlist.txt") as f:

  for line in f:
     try :
       num_list.append(int(line))
     except:
       continue #or other stuffs

注意这可能有很多场景,根据您的代码,您可以使用各种方法!

答案 1 :(得分:1)

如果愿意,可以使用int构造函数或type-caster将字符串转换为整数。如果无法进行转换,则会抛出ValueError

int_value = int(strvalue)

在python中对列表中的所有元素执行相同操作的好方法是使用map函数。在解释器中执行help(map)以查看其工作原理

# assuming that the file exists
file = open("numberlist.txt")
my_list = []
for line in file:
        line = line.strip()
        list.append(line)
try:
    list_of_ints = map(int, my_list)
except ValueError:
    print("invalid file")

检查列表是否正确,将操作放在try-except块中。

您可以使用with语句

在几行中完成所有这些操作
with open("numbers.txt") as file_object:
    try:
        list_of_ints = map(int, (l.strip() for l in file_object))
    except ValueError:
        print("invalid file")

这里我使用file_object作为iterable(它给出了文件中的所有行)。并使用生成器语法创建另一个可应用map函数的迭代

答案 2 :(得分:0)

file = open("numberlist.txt",'r')
l = []

for line in file:
    line = line.split()
    try:
        l.append(int(line[0]))
    except:
        continue