【问题标题】:Python Divide a stringPython分割一个字符串
【发布时间】:2011-11-19 20:35:06
【问题描述】:

我有一个这样的字符串:

 <td casd2" aasdeft" class="satyle3">
    <b><a asddidasd?ct=Peasds&amp;fasdaao=Monsdar
    &amp;pID=19635"...

我需要 19635。

有人可以帮助我吗?

【问题讨论】:

  • 您的字符串来自 HTML 文档吗?它看起来几乎像 HTML。
  • 是的,我想是的:如果是 html,那么除了正则表达式之外,您还可以(实际上,我什至会说您应该)使用解析器。

标签: python string split divide


【解决方案1】:

我会使用正则表达式来做一个更简洁的解决方案:

>>> import re
>>> s = '<td casd2" aasdeft" class="satyle3"><b><a asddidasd?ct=Peasds&amp;fasdaao=Monsdar&amp;pID=19635"...'
>>> match = re.search(".*pID=(\d+).*",s)
>>> if match:
...   match.group(1)
... 
'19635'

是不是很好很简单?

【讨论】:

  • 我猜re.search 会更好更简单。
  • 在这种情况下并没有太大的区别,但你是对的。已编辑!
  • match.group(1) AttributeError: 'NoneType' 对象没有属性 'group'
  • 是的,这是一个常见错误,您应该先询问 if match:,因为如果未找到该模式,re.search 会返回 None。已编辑!
  • 你为什么要在正则表达式的每一边填充.*?你可以使用match = re.search("pID=(\d+)",s)
【解决方案2】:

给出的信息很少,这就是我的处理方式:

import re

someString = ... # your original string

m = re.search(r"pID=(\d+)", someString)
pid = m.group(1)

【讨论】:

    【解决方案3】:

    如果您正在解析 HTML/XML,最好使用正确的工具。 re 可以快速而肮脏地完成工作;但是当你以后扩展时会回来咬你(没有死的软件总是在进化)或者你需要处理相同数据的其他形式的表示。

    python 中的Beautiful Soup 提供了良好的解析例程——值得通过学习曲线。

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      相关资源
      最近更新 更多