Python 列表替换
可能重复的问题:
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]
这样的列表中,其实列表里并没有要替换的逗号。这个列表里面包含了数字 2
、5
等等,逗号只是为了让我们在视觉上更容易分辨这些数字。
所以,如果你想把这个列表里的内容合并成一个没有逗号的字符串,可以用很多方法。比如,你可以使用下面的代码,把它们连接成一个没有逗号的字符串:
"".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"
>>>