Python 列表替换

0 投票
5 回答
16442 浏览
提问于 2025-04-17 09:21

可能重复的问题:
Python 和换行符

在Python中,当你处理字符串时,可以使用“replace”这个方法来替换字符串中的某个字符。例如:

h = "2,3,45,6"
h = h.replace(',','\n')
print h

Returns:
2
3
45
6

那么,有没有办法对列表做同样的事情呢?比如把列表中的所有“,”替换成“\n”?

像这样的列表:

h = ["hello","goodbye","how are you"]

"hello"
"goodbye"
"how are you"

然后脚本的输出应该是这样的:

任何建议都会很有帮助!

5 个回答

1

在像你的 h = [2,5,6,8,9] 这样的列表中,其实列表里并没有要替换的逗号。这个列表里面包含了数字 25 等等,逗号只是为了让我们在视觉上更容易分辨这些数字。

所以,如果你想把这个列表里的内容合并成一个没有逗号的字符串,可以用很多方法。比如,你可以使用下面的代码,把它们连接成一个没有逗号的字符串:

"".join([str(x) for x in h])

这样做的结果会是 25689

2

你可以用列表推导式来实现这个:

>>> search = 'foo'
>>> replace = 'bar'
>>> lst = ['my foo', 'foo', 'bip']
>>> print [x.replace(search, replace) for x in lst]
['my bar', 'bar', 'bip']
5

根据你的例子和需求,你可以使用 str.join,这可能正是你想要的。

>>> h
['2', '3', '45', '6']
>>> print '\n'.join(str(i) for i in h)
2
3
45
6

对于你的第二个例子也是一样的。

>>> h = ["hello","goodbye","how are you"]
>>> print '\n'.join(str(i) for i in h)
hello
goodbye
how are you

如果你真的想在字符串中加上引号,可以使用以下方法。

>>> h = ["hello","goodbye","how are you"]
>>> print '\n'.join('"{0}"'.format(i) if isinstance(i,str) else str(i) for i in h)
"hello"
"goodbye"
"how are you"
>>> 

撰写回答