替换字符串列表中的一个字符串

时间:2012-08-23 08:36:05

标签: python

我有一个字符串列表。

如果其中一个字符串(例如索引为5)是空字符串,我想用“N”替换它。

我该怎么做?天真的方法(对于java程序员)不起作用:

string_list[5] = "N"

给出

  

'str'对象不支持项目分配

(string_list最初来自.csv文件 - 这就是它可能包含空字符串的原因。)

5 个答案:

答案 0 :(得分:5)

您的错误似乎表明您的string_list不是字符串列表而是真正的字符串(由于字符串是不可变的,因此不支持分配)。

如果您的string_list是一个真实的字符串列表,例如:string_list = ["first", "second", "", "fourth"],那么您将能够string_list[2] = "third"获取string_list = ["first", "second", "third", "fourth"]

如果您需要自动检测列表中空字符串的位置,请尝试使用index

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

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

答案 1 :(得分:2)

你说你有一个字符串列表,但是你错了,看起来你正试图索引一个字符串

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

是一个字符串列表。

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

是否将空字符串替换为“N”的字符串列表

答案 2 :(得分:1)

试试这个:

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

正如其他人所提到的,听起来string_list实际上是一个字符串本身,这意味着你不能使用赋值来改变一个字符。

答案 3 :(得分:0)

在python中使用列表并在需要时将它们转换为字符串。

>> 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]

答案 4 :(得分: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']