【问题标题】:How to split several characters in a list in Python 3如何在 Python 3 中拆分列表中的多个字符
【发布时间】:2019-05-01 22:55:44
【问题描述】:

我需要拆分这个列表:

1 2 3 |4 5 6 |  7  8

把它变成这样:

7 8 4 5 6 1 2 3

到目前为止,我只使用了 split() 函数,但它只分割了“|”我得到了这个['1 2 3','4 5 6','7 8']。所以我的问题是如何分割空格(它们可能超过 1 个)。

【问题讨论】:

  • 但是您还颠倒了输出中段的顺序?最好先再拆分第二次。
  • split 默认为空格分割;你被困在哪里了?
  • 是的,我需要从右到左遍历每个获得的令牌。
  • 整数的反向列表可以解释为8 7 6 5 4 3 2 1,而您的预期输出不同。

标签: python list split token reverse


【解决方案1】:

您可以在生成器表达式中再次拆分第一次拆分返回的列表中的项目:

s = '1 2 3 |4 5 6 | 7 8'
print(' '.join(i for t in s.split('|')[::-1] for i in t.split()))

这个输出:

7 8 4 5 6 1 2 3

【讨论】:

    【解决方案2】:

    你可以试试这个:

    '1 2 3 |4 5 6 |  7  8'.replace('|', ' ').split()
    

    输出将是:

    ['1', '2', '3', '4', '5', '6', '7', '8']

    【讨论】:

      【解决方案3】:

      考虑到您正在尝试做的事情,拆分不仅仅是“|”是不必要的,因为以下将起作用:

      mystr = "1 2 3|4 5 6| 7 8"
      newstr = "".join(mystr.split("|").reverse())
      

      回答如何分割空格

      mylist = []
      for chunk in mystr.split("|"):
          mylist.extend(chunk.split())
      

      【讨论】:

        【解决方案4】:

        你可以试试这个

        a = "1 2 3 |4 5 6 |  7  8"
        print([int(j) for i in a.split("|")[::-1] for j in i.split(" ") if len(j) != 0])
        

        这将被输出

        [7, 8, 4, 5, 6, 1, 2, 3]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多