从列表项中删除特定的空格

时间:2012-12-02 10:52:02

标签: python list whitespace

我有一个巨大的行列表,每个行看起来如下

1 01 01 some random text

1 01 01部分是从一行到另一行的参考号。我想删除三个参考号之间的两个空格,以便这些行看起来如下。

10101 some random text

显然,这需要for循环。问题是我应该在循环内写什么我不能使用strip

for i in my_list:
    i.strip()

因为如果有的话,会删除所有的空格,给我

10101somerandomtext

我不想要。但如果我写

for i in my_list:
    i.remove(4)
    i.remove(1)

我收到错误消息'str' object has no attribute 'remove'。在这种情况下,什么是正确的解决方案。

提前致谢。

3 个答案:

答案 0 :(得分:3)

如果数字始终在开头,您可以使用str.replace函数采用可选参数count的事实:

for l in mylist:
    print l.replace(' ', '', 2)

请注意,我在这里print的原因是:你不能就地改变字符串,因为字符串是不可变的(这也是他们不这样做的原因)使用remove方法,replace返回修改后的字符串,但保留初始字符串完整。因此,如果您在列表中需要它们,那么创建另一个列表就更清晰了:

newlist = [l.replace(' ', '', 2) for l in mylist]

像这样覆盖列表也是安全的:

mylist = [l.replace(' ', '', 2) for l in mylist]

答案 1 :(得分:1)

使用replacecount参数替换前2个空格。

a = "1 01 01 some random text"
a.replace(" " , "", 2)
>>> '10101 some random text'

答案 2 :(得分:1)

split接受第二个参数 - 要分割的数量

for i in my_list:
    components = i.strip(" ", 3)
    refnum = ''.join(components[:3])
    text = components[3]

或者在python 3中:

for i in my_list:
    *components, text = i.strip(" ", 3)
    refnum = ''.join(components)