Skip to main content
 首页 » 编程设计

python之如何删除 python 中字符串列表中的空格

2025年05月04日27birdshome

我一直在浏览论坛和网站上关于我的问题的问题,但似乎都没有用!

我一直在学校做一个 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()]