这就是我所拥有的
file = open("numberlist.txt")
list = []
for line in file:
line = line.strip()
list.append(line)
我会将每行转换为文件中for行的整数:我该怎么做?
可选:如果numberlist.txt
中有非数字字符?我该如何测试并且必须编程告诉我文件不正确?
答案 0 :(得分:3)
如果每行都有一位数字,您可以直接使用file-object和map
功能:
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