【问题标题】:How to get text between data and comma in a string?如何在字符串中获取数据和逗号之间的文本?
【发布时间】:2019-01-13 19:03:54
【问题描述】:

我正在从一个网站解析文本,我得到了一个字符串:

"Some Event 21.08.2019—31.08.2019 Standart (1+1) ,  Some text"

或类似的东西。我需要在最后一个 datecomma 之间获取文本。 这是"Standart (1+1)" 切片。该怎么做?

str1 = "Some Event 21.08.2019—31.08.2019 Standart (1+1) ,  Some text"
Answer: str2 = "Standart (1+1)"

【问题讨论】:

  • 我需要在最后一个数据和逗号之间获取文本“最后一个数据”是什么意思?
  • 您遇到的所有日期是否都遵循DD.MM.YYYY 格式?
  • @Daweo 是的,所有日期

标签: python python-3.x string indexing


【解决方案1】:

你可以用正则表达式解析这个:

>>> import re
>>> str1 = "Some Event 21.08.2019—31.08.2019 Standart (1+1) ,  Some text"
>>> m = re.match(r'.*? \d{2}\.\d{2}\.\d{4}.\d{2}\.\d{2}\.\d{4} (.*?) , .*', str1)
>>> m.group(1)
'Standart (1+1)'

.*? 匹配任何内容,但仅限于它必须匹配的程度。 \d{2} 匹配两位数。 \. 匹配句点。 . 匹配任何内容,我使用它来匹配该短划线,而无需输入它。 (.*?) 匹配任何内容并捕获它,以便稍后将拥有,。最后,我用.* 捕获了所有剩余部分。

如果您想要的字符串中有逗号,这将中断。那么最好使用(.*) 进行捕获,最后使用.*?

顺便说一句,它可能写成“标准”而不是“标准”。

【讨论】:

  • 我得到:AttributeError: 'NoneType' object has no attribute 'group'
  • 我的第一个猜测是您使用的平台默认没有 UTF-8,或者您的文件未编码为 UTF-8。尝试将破折号 () 替换为普通连字符 (-) 或将单个 . 替换为 .+ 以捕获多字节字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多