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

2024-04-18 22:49:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在通过论坛和我的问题在网站上提出的问题,他们似乎没有工作!你知道吗

我在学校做过一个python3程序,我想从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', ' ']等等。你知道吗

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


Tags: in程序number列表for网站contents数字
3条回答

似乎您只是在代码中输入了一个错误:检查元素是否是空字符串'',实际上您想检查它是否是空格' '。你知道吗

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()]

首先,我想知道列表.txt文档完全像。记住正确的行尾。你知道吗

为了摆脱空间,你可以采取各种方法。我想我会选择这样的方式:

 [ x.strip() for x in data.readlines() if x.strip().isdigit() ]

它是一个列表,返回一个列表

你可以这样做

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)

相关问题 更多 >