【问题标题】:Python List Replace [duplicate]Python列表替换[重复]
【发布时间】:2012-01-01 15:37:13
【问题描述】:

可能重复:
Python and Line Breaks

在 Python 中,我知道当您处理字符串时,您可以使用“替换”来替换字符串中的某个字符。例如:

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"

脚本应该输出如下内容:

任何建议都会有所帮助!

【问题讨论】:

  • 不是 100% 确定您的意思;举一个你想应用它的列表的简短例子。
  • 当然可以,但细节取决于您是否有字符列表或较小字符串(例如行)的列表。请举例输入输出。
  • 那不是一个字符串列表,所以它首先不包含","。你想从中得到什么输出?如果"2\n5\n6\n8\n9",那么"\n".join(h) 应该可以工作。不过,它实际上并不是“替换”。
  • 我解决了这个问题,现在应该更容易回答了
  • 呵呵,忘了str()。不管怎样,@Abhijit 说了什么。

标签: python list python-2.7


【解决方案1】:

看看你的例子和愿望,你可以使用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"
>>> 

【讨论】:

    【解决方案2】:

    您可以为此使用列表推导:

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

    【讨论】:

      【解决方案3】:

      在像您的h = [2,5,6,8,9] 这样的列表中,列表本身确实没有逗号可以替换。该列表包含25 等项目,逗号只是外部表示的一部分,以便更容易在视觉上分隔项目。

      因此,要从列表中生成一些不带逗号的输出形式,您可以使用任意数量的技术。例如,要将它们全部连接成一个不带逗号的字符串,请使用:

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

      这将评估为25689

      【讨论】:

        【解决方案4】:
        for each in h: print each
        

        在 3.x 中:

        for each in h: print(each)
        

        列表只是数据的表示。您只能影响它在输出中的外观。

        【讨论】:

          【解决方案5】:

          您可以替换字符串中的“,”,因为“,”是字符串本身的一部分,但您不能替换列表中的“,”,因为它不是列表中的项目,而是使用的项目通过 python 来描述这样一个列表中的不同项目以及左方括号和右方括号。这就像询问您是否可以替换用于创建字符串的 '"'。另一方面,如果 ',' 是列表中的一个项目并且您想用换行项目替换它,那么您可以使用列表推导喜欢:

          ['\n' if x=="," else x for x in yourlist]
          

          或者如果你想在一行上打印每个项目,你可以使用:

          for item in list:
              print item
          

          【讨论】:

            猜你喜欢
            • 2020-04-26
            • 2020-10-13
            • 1970-01-01
            • 2010-12-05
            • 2019-04-02
            • 2021-02-28
            • 2021-09-01
            • 2019-06-06
            • 2019-05-20
            相关资源
            最近更新 更多