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

时间:2016-12-21 11:36:01

标签: python

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

我一直在学校做一个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', ' ']等等。

你能帮我解决这个问题吗?

6 个答案:

答案 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:])