Python:从列表对象中删除空格

时间:2010-07-12 23:04:42

标签: python list

我有一个从mysql数据库追加并包含空格的对象列表。我希望删除下面的空格,但我使用的代码不起作用?

hello = ['999 ',' 666 ']

k = []

for i in hello:
    str(i).replace(' ','')
    k.append(i)

print k

7 个答案:

答案 0 :(得分:93)

Python中的字符串是不可变的(意味着它们的数据无法修改),因此replace方法不会修改字符串 - 它会返回一个新字符串。您可以按如下方式修改代码:

for i in hello:
    j = i.replace(' ','')
    k.append(j)

然而,实现目标的更好方法是使用列表理解。例如,以下代码使用strip

从列表中的每个字符串中删除前导和尾随空格
hello = [x.strip(' ') for x in hello]

答案 1 :(得分:10)

列表理解[num.strip() for num in hello]是最快的。

>>> import timeit
>>> hello = ['999 ',' 666 ']

>>> t1 = lambda: map(str.strip, hello)
>>> timeit.timeit(t1)
1.825870468015296

>>> t2 = lambda: list(map(str.strip, hello))
>>> timeit.timeit(t2)
2.2825958750515269

>>> t3 = lambda: [num.strip() for num in hello]
>>> timeit.timeit(t3)
1.4320335103944899

>>> t4 = lambda: [num.replace(' ', '') for num in hello]
>>> timeit.timeit(t4)
1.7670568718943969

答案 2 :(得分:7)

result = map(str.strip, hello)

答案 3 :(得分:4)

String方法返回修改后的字符串。

k = [x.replace(' ', '') for x in hello]

答案 4 :(得分:3)

假设您不想删除内部空格:

def normalize_space(s):
    """Return s stripped of leading/trailing whitespace
    and with internal runs of whitespace replaced by a single SPACE"""
    # This should be a str method :-(
    return ' '.join(s.split())

replacement = [normalize_space(i) for i in hello]

答案 5 :(得分:2)

for element in range(0,len(hello)):
      d[element] = hello[element].strip()

答案 6 :(得分:1)

replace()不会就地操作,您需要将其结果分配给某些东西。另外,为了更简洁的语法,你可以用一行代替你的for循环:hello_no_spaces = map(lambda x: x.replace(' ', ''), hello)