gpt4 book ai didi

python - 通过多个可能的分隔符拆分字符串

转载 作者:行者123 更新时间:2023-12-04 07:38:44 25 4
gpt4 key购买 nike

我想解析一个 str进入float的列表值,但是我想灵活处理我的分隔符。具体来说,我希望能够使用这些

s = '3.14; 42.2'  # delimiter is '; '
s = '3.14;42.2' # delimiter is ';'
s = '3.14, 42.2' # delimiter is ', '
s = '3.14,42.2' # delimiter is ','
s = '3.14 42.2' # delimiter is ' '
我想删除所有空格,但这会禁用最后一个版本;我试过 re.split() -功能通过做 re.split('[;, ]', s)这可以使用单个字符作为分隔符,但否则会失败。
我可以但是
s.replace('; ', ';').replace(', ', ';').replace(',', ';').replace(' ', ';')
s.split(';')
这有效但似乎不是一个好的做法或有用 - 特别是如果我将来添加更多分隔符。这样做的好方法是什么?

最佳答案

您可以使用 re.split 和 split on ([ ] 是一个空格,括号仅用于显示)

[;,] ?|[ ]
模式匹配
  • [;,] ?匹配任一 ;,后跟一个可选空格
  • |
  • [ ]匹配单个空格

  • Regex demo | Python demo
    更严格的环视模式可以使用环视在左侧断言一个数字。
    (?<=\d)(?:[;,] ?| )(?=\d)
    模式匹配:
  • (?<=\d)正向后视,向左断言一个数字
  • (?:交替的非捕获组
  • [;,] ?匹配任一 ;,后跟一个可选空格
  • |
  • 匹配一个空格

  • )关闭非捕获组
  • (?=\d)正向预测,向右断言一个数字

  • Regex demo
    示例代码
    import re

    strings = [
    "3.14; 42.2",
    "3.14;42.2",
    "3.14, 42.2",
    "3.14,42.2",
    "3.14 42.2"
    ]

    for s in strings:
    print(re.split(r"[;,] ?| ", s))
    输出
    ['3.14', '42.2']
    ['3.14', '42.2']
    ['3.14', '42.2']
    ['3.14', '42.2']
    ['3.14', '42.2']

    关于python - 通过多个可能的分隔符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67606214/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com