【问题标题】:How to delete all letters before semicolon in python?The [duplicate]python中如何删除分号前的所有字母? [重复]
【发布时间】:2019-05-02 16:44:41
【问题描述】:

字符串:

“杰克;10;20;30\n 奥马尔;20,24,25\n 卡尔;30;30;30\n”

如何使用 map 删除或过滤字符串中的所有名称?

str = filter( x.isdigit() , for x str)

但它似乎无法正常工作。

【问题讨论】:

  • 所以你只想要数字?
  • @DanielMesejo,您好,先生,是的,我想不通

标签: python string


【解决方案1】:

在您的具体情况下,您可以使用 python 的内置 re 和列表理解。

>>> import re
>>> text = "Jack;10;20;30\n Omar;20,24,25\n Carl;30;30;30\n"
>>> [number for number in re.split(';|,| |\n|', text) if number.isdigit()]
['10', '20', '30', '20', '24', '25', '30', '30', '30']

re.split;,\n 分割字符串

列表推导式创建数字元素列表。

【讨论】:

    【解决方案2】:

    只使用 split 怎么样:

    str = "Jack;10;20;30\n Omar;20,24,25\n Carl;30;30;30\n"
    output_list = [line.split(";")[1:] for line in str.split("\n")]
    output = [";".join(line) for line in output_list]
    >>>['10;20;30', '20,24,25', '30;30;30', '']
    

    【讨论】:

      【解决方案3】:

      您可以split 字符串,将结果列表切片,然后使用相同的分隔符将切片列表重新join 转换为字符串:

      s = "Jack;10;20;30\n Omar;20,24,25\n Carl;30;30;30\n"
      print('\n'.join(';'.join(l.split(';')[1:]) for l in s.splitlines()))
      

      这个输出:

      10;20;30
      20,24,25
      30;30;30
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-23
        • 1970-01-01
        • 2021-06-05
        • 1970-01-01
        • 2021-11-29
        相关资源
        最近更新 更多