2012-12-02 27 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