我有一个字符串列表。
如果其中一个字符串(例如在索引 5 处)是空字符串,我想用“N”替换它。
我怎么做?天真的方法(对于 java 程序员)不起作用:
string_list[5] = "N"
给
“str”对象不支持项目分配
(string_list 最初来自一个 .csv 文件——这就是它可能包含空字符串的原因。)
我有一个字符串列表。
如果其中一个字符串(例如在索引 5 处)是空字符串,我想用“N”替换它。
我怎么做?天真的方法(对于 java 程序员)不起作用:
string_list[5] = "N"
给
“str”对象不支持项目分配
(string_list 最初来自一个 .csv 文件——这就是它可能包含空字符串的原因。)
您的错误似乎表明您的 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"]
您说您有一个字符串列表,但从您的错误来看,您似乎正在尝试索引一个字符串
l = ["a", "b", "", "c"]
是一个字符串列表。
l = ["N" if not x else x for x in l]
是用“N”替换空字符串的字符串列表
试试这个:
>>> s = 'abc de'
>>> s.replace(' ', 'N')
'abcNde'
正如其他人所提到的,这听起来string_list
实际上是一个字符串本身,这意味着您不能使用赋值来更改字符。
在 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]
以下示例遍历列表(子列表)列表,以替换字符串、单词:
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']