2012-12-02 29 views
1

我有一个巨大的行列表,其中的每一个看起来如下从列表项中删除特定的空格

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'。在这种情况下什么是合适的解决方案。

在此先感谢。

+0

嘿,我在Academia说你的问题,但我没有帐户,也没有其他方法可以联系到你,所以一旦你阅读了这篇文章,请让我知道删除它。你可以对那个女孩进入办公室说,她开始看到我看到的温暖的衣服(那些仍然在那里的衣服:P),这样她就明白你正在谈论衣服。如果她说你的意思是什么,告诉她你说的是因为她(太)的夏装! ;) – gsamaras

回答

1

使用count作为replace的参数来替换前两个空格。

a = "1 01 01 some random text" 
a.replace(" " , "", 2) 
>>> '10101 some random text' 
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] 
+0

该解决方案完美运作。尽管如此,我并没有创建另一个列表,而是将'replace'的输出打印到一个.txt文件中。 – Koldito

+0

@ user1559769我很高兴它有帮助。您可能想要[接受答案](http://meta.stackexchange。com/a/5235/181223)对这个问题和其他可能的问题。 –

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) 
+0

认为你的意思是在代码中使用'split'而不是'strip' – Stuart