我一直在浏览论坛和网站上关于我的问题的问题,但似乎都没有用!
我一直在学校做一个 python 3 程序,我想从 1 到 1000 的数字列表中删除空格。我已经制作了数字的文本文档并将它们导入到列表中,但是当它们是放入列表中,它们包含我不能拥有的空间。
我已经尝试了所有的方法,它们似乎把每个数字都分开了,但它们并没有留在原来的数字中。
number = []
f = open('test.txt', 'r')
file_contents = f.read()
List = file_contents
f.close()
for i in List:
number.append(i)
for i in number:
if i == '':
number.remove(' ')
print(number)
这就是结果给我的: ['0', ' ', '1', ' ', '2', ' ', '3', ' ', '4', ' ', '5', ' ', '6', ' ', '7', ' '] 等等。
你能帮我解决这个问题吗?
请您参考如下方法:
看起来你只是在代码中打错了:你检查元素是否是一个空字符串'',你实际上想检查它是否是一个空格''.
for i in number:
if i == ' ': # ' ' instead of ''
number.remove(' ')
但是,在迭代同一个列表的同时从列表中删除元素不是好的做法,并且可能会导致一些令人惊讶的结果。它似乎在这种情况下有效,但甚至不要养成习惯。相反,使用列表理解来过滤掉不需要的项目。
number = [n for n in number if n != ' ']
如果您还想将数字字符串转换为实际数字,请使用:
number = [int(n) for n in number if n != ' ']
但是,您读取文件的方式似乎还有另一个问题。您将文件的全部内容读入一个字符串,我只能假设它看起来像这样:"1 2 3 4 ... 11 12 13 ... 451 452 ..."。然后,将该字符串中的每个 字符 转换为一个数字,即 451, 452,您最终得到 '4', '5', ' 1', ' ', '4', '5', '2'。不是遍历每个字符,而是先拆分字符串
List = file_contents.split() # added .split()
这样,您之后甚至不需要删除空格,因为这些空格已通过 split 删除。
您可以使用 with 和单个列表理解在一行(好吧,两行)中完成所有这些:
with open('test.txt', 'r') as f:
number = [int(n) for n in f.read().split()]
