我一直在浏览论坛和网站上提出的有关我的问题的问题,但这些问题似乎都没有用!
我一直在学校做一个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', ' ']
等等。
你能帮我解决这个问题吗?
答案 0 :(得分:0)
可以通过使用以下代码替换第11行到第13行来修复它:
number = [i for i in number if i != ' '] # To exclude empty space from array
# Or
number = [i.strip() for i in number if i.strip()] # To remove space of each element
答案 1 :(得分:0)
你可以这样做
number = []
f = open('test.txt', 'r')
file_contents = f.read()
f.close()
for i in file_contents:
if i.strip():
number.append(i)
print(number)
答案 2 :(得分:0)
首先,了解这个list.txt文档的确如此。记住正确的行尾。
要摆脱空间,你可以采取各种方式。我想我会选择这样的东西:
[ x.strip() for x in data.readlines() if x.strip().isdigit() ]
这是一个列表理解,它返回一个列表
答案 3 :(得分:0)
您似乎只是在代码中输入了一个拼写错误:您检查该元素是否为空字符串' '
,您实际上想要检查它是否为空格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'
,最终得到split
。而不是遍历每个字符,首先List = file_contents.split() # added .split()
字符串
split
这样,您甚至不需要删除空格,因为已经使用with
删除了这些空格。
您可以使用with open('test.txt', 'r') as f:
number = [int(n) for n in f.read().split()]
和单个列表理解在一行(两行)中完成所有这些操作:
TextBox
答案 4 :(得分:0)
你可以这样做:
list = ['0', ' ', '1', ' ', '2', ' ', '3', ' ', '4', ' ', '5', ' ', '6', ' ', '7', ' ']
list = filter(lambda x:x != ' ', list)
for i in list:
number.append(i)
print(number)
我得到了这样的结果:[' 0',' 1',' 2',' 3',' 4& #39;,' 5',' 6',' 7']
答案 5 :(得分:-1)
你可以使用过滤功能或递归:
def removal(yourlist):
if yourlist[0]==[' ']:
return removal(yourlist[1:])
if yourlist[0]!=[' ']:
return yourlist[0]+removal(yourlist[1:])