【问题标题】:How to get specific text from a string?如何从字符串中获取特定文本?
【发布时间】:2022-01-04 21:21:48
【问题描述】:

下面的字符串是我收到的输出,我特别想要方括号内的数字。

4 requests to https://twitter.com/search?f=live&lang=en&q=from%3AUsername&src=spelling_expansion_revert_click failed, giving up.
[3962342629375400258]

我尝试了 split(),但是有没有一种有效的方法来提取它?

【问题讨论】:

  • 尝试在\n上拆分
  • 数字的长度是固定的吗?
  • 正则表达式是一个选项:import re; re.findall(r'\[(\d+)\]', your_string)
  • 否,数字的长度因用户而异。
  • @AnonymousProgrammer 请不要将 Solved 添加到您的标题中。这个问题有可见的答案,您可以选择最能解决您问题的accept an answer。如果您的答案已在 cmets 中得到解决,您可以鼓励该用户在答案字段中发布他们的答案以被接受。在任何情况下,仅通过在标题中添加“已解决”一词,系统都无法知道该问题有一个可接受的答案。

标签: python string


【解决方案1】:

如果您的 括号中的数字始终位于单独的行上,除了方括号和可选的尾随新行之外没有任何其他前缀或后缀,我会使用:

s = '...\n[1234]'
s.rstrip().rsplit(sep='\n', maxsplit=1)[-1].removeprefix('[').removesuffix(']')

首先,我们确保删除所有尾随空格,包括尾随新行。然后我们将字符串分成两部分,但是一旦我们找到从字符串末尾开始的最后一行,就避免任何不必要的拆分。然后我们从列表中选择最后一行并删除括号。

【讨论】:

    【解决方案2】:

    你可以简单地使用 find:

    s[s.find("[")+1:s.find("]")]
    

    【讨论】:

    • 你的意思是find("]")。但是在这里,如果第一行中包含方括号,这将不起作用。
    • 错字!..大手指..在给定的示例中不是这种情况,所以它应该可以工作:)
    【解决方案3】:

    此代码是否找到左括号的索引和右括号的索引并剪切这两个索引之间的字符串,你得到括号之间的字符串

    string[string.index("[")+1:string.index("]")]
    

    为了满足@geraldmayr 的建议,您可以删除您想要使用此代码分段的括号之前的所有括号:

    string = "fjusfausbfhj[sdfsdfsfsf][1231231231]"
    
    string = string.split("[")[len(string.split("["))-1][:-1]
    
    print(string)
    

    【讨论】:

    • 如果第一行中包含方括号,这将不起作用。
    • 我认为你没有阅读示例和问题正确@geraldmayr
    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多