【问题标题】:How to split strings by only the first special character that's within the string? [duplicate]如何仅通过字符串中的第一个特殊字符拆分字符串? [复制]
【发布时间】:2015-02-25 02:41:27
【问题描述】:

我想只用该字符串中的第一个等号分割下面的字符串

字符串:

 s= 'ButtonParams=U3ViamVjdCxFbWFpbA=='

Desired_String:

 s= ['ButtonParams','U3ViamVjdCxFbWFpbA==']

当我执行 s.split("=") 时,我得到以下内容,这是我不想要的:

s.split("=")
['ButtonParams', 'U3ViamVjdCxFbWFpbA', '', '']

在这种情况下,我需要在字符串列表中运行此函数,因此可伸缩性在这里很重要。

【问题讨论】:

  • 您阅读过split() 的文档吗?
  • 嘿,但你为什么加了regex

标签: python regex string list split


【解决方案1】:

split 接受可选的“maxsplit”参数:如果将其设置为1,它将在找到的第一个= 字符处拆分并返回字符串的其余部分:

>>> s.split('=', 1)
['ButtonParams', 'U3ViamVjdCxFbWFpbA==']

【讨论】:

    【解决方案2】:

    s.split("=", maxsplit=1) 是最好的,但是

    import re
    print (re.split('=',s,1))
    

    输出是

    ['ButtonParams', 'U3ViamVjdCxFbWFpbA==']
    

    正如你标记的

    与帖子有点偏差

    如果预期的输出是 ['ButtonParams', 'U3ViamVjdCxFbWFpbA'],那么您可以有以下 liscos(列表推导)

    • [i for i in s.split('=') if i is not '']
    • [i for i in s.split('=') if i ](亚当·斯密供稿)

    【讨论】:

    • 在所需的输出中 U3ViamVjdCxFbWFpbA 末尾有 ==
    • @lolbas 检查编辑。
    • @AdamSmith 这行不通,因为 OP 期望别的东西。检查编辑。 :P
    • 完全没有理由在这里使用正则表达式。我更喜欢你的其他答案,即使它不是相同的预期输出! :)
    • @AdamSmith 感谢您的评论。检查这个答案是否适合
    【解决方案3】:

    str.split 接受一个可选参数 maxsplit,它决定了(最大)分割的数量,例如:

    "ButtonParams=U3ViamVjdCxFbWFpbA==".split("=", maxsplit=1)
    # ['ButtonParams', 'U3ViamVjdCxFbWFpbA==']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-13
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多