2

我有一个字符串列表。

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

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

string_list[5] = "N"

“str”对象不支持项目分配

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

4

5 回答 5

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"]
于 2012-08-23T08:41:57.083 回答
2

您说您有一个字符串列表,但从您的错误来看,您似乎正在尝试索引一个字符串

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

是一个字符串列表。

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

是用“N”替换空字符串的字符串列表

于 2012-08-23T08:48:02.950 回答
1

试试这个:

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

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

于 2012-08-23T08:38:53.310 回答
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]
于 2012-08-23T08:44:26.873 回答
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']
于 2016-04-29T12:55:46.053 回答