我有一个字符串列表。
如果其中一个字符串(例如索引为5)是空字符串,我想用“N”替换它。
我该怎么做?天真的方法(对于java程序员)不起作用:
string_list[5] = "N"
给出
'str'对象不支持项目分配
(string_list最初来自.csv文件 - 这就是它可能包含空字符串的原因。)
答案 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']