2012-08-23 155 views
2

我有一個字符串列表。替換字符串列表中的一個字符串

如果字符串之一(例如,在指數5)是空字符串,我想用「N」來代替它。

我該怎麼做?天真的方法(Java程序員)不工作:

string_list[5] = "N" 

'海峽' 對象不支持項目分配

(string_list最初來自一個.csv這就是爲什麼它可能包含空字符串。)

+0

看起來像'string_list'實際上是一個字符串,而不是一個字符串列表。列表是可變的,所以你應該可以像你一樣替換它的項目。 – Kos

+0

你有簡單的字符串沒有列表,你可以使用替換方法。 – Denis

+1

你可以發佈你的'string_list'的例子嗎? –

回答

5

你的錯誤似乎表明您string_list不是字符串,但一個真正的字符串列表(不支持assignement因爲字符串是不可變的)。

如果您的string_list是一個真正的字符串列表,例如:string_list = ["first", "second", "", "fourth"],那麼您將可以通過string_list[2] = "third"來獲得string_list = ["first", "second", "third", "fourth"]

如果需要自動檢測,其中一個空字符串位於列表,請嘗試使用:

string_list[string_list.index("")] = "replacement string" 

print string_list 
>>> ["first", "second", "replacement string", "fourth"] 
+0

我犯了一個dumdum的錯誤:當分裂我的原始線我給它一個索引,所以一個字符串被返回,而不是一個列表。 *感到尷尬* –

1

試試這個:

>>> s = 'abc de' 
>>> s.replace(' ', 'N') 
'abcNde' 

正如其他人所說,這聽起來像string_list實際上是一個字符串本身,這意味着你不能使用賦值更改字符。

+0

這不是字符串列表 – Aesthete

+0

對不起,讀錯了 – Aesthete

+0

@Aesthete Ha,不用擔心 - 我一開始也是這麼做的。 – RocketDonkey

0

在蟒蛇的工作列表和它們轉換爲字符串時需要的話。

>> str = list("Hellp") 

>> str 
['H', 'e', 'l', 'l', 'p'] 

>> str[4] = 'o' 

>> str 
['H', 'e', 'l', 'l', 'o'] 

使它成爲一個字符串中使用

>> "".join(str) 

'Hello World' 

Python中的字符串是不變的,它們不能被修改。可以使用List Comprehensions

一些事情,如:

>> myStr = ['how', 'are', 'yew', '?'] 

>> myStr = [w.replace('yew', 'you') for w in myStr] 
2

你說你有的列表,但是從你錯誤它看起來像你想索引

l = ["a", "b", "", "c"] 

是一串字符串。

l = ["N" if not x else x for x in l] 

與「N」

+0

不錯。好的東西值得我的錯誤。 –

+1

任何有這樣的名字的人。讓我笑:) – Aesthete

0

下面的例子遍歷列表(子列表)名單替換爲空字符串的字符串列表,以替換字符串,一個字:

myoldlist=[['aa bbbbb'],['dd myword'],['aa myword']] 
mynewlist=[] 
for i in xrange(0,3,1): 
    mynewlist.append([x.replace('myword', 'new_word') for x in myoldlist[i]]) 

print mynewlist 
# ['aa bbbbb'],['dd new_word'],['aa new_word'] 
+2

你的兩個答案似乎是[幾乎相同](http://stackoverflow.com/questions/13781828/replace-a-string-in-list-of-lists/36938886#36938886)你可能可以考慮引用一個作爲你的答案,而另一個你只需要在評論中發佈一個鏈接(一旦你的代表> = 50) – Ian

+0

@伊恩哦!我不知道這一點!謝謝! –

相關問題