有点疼。我正在使用Python进行一些抓取,试图从几行标记错误的HTML中获取地址。以下是格式示例:
256-555-5555<br/>
1234 Fake Ave S<br/>
Gotham (Lower Ward)<br/>
我只想检索1234 Fake Ave S, Gotham
。有什么想法吗?我整晚都在做regex,现在我的脑子乱七八糟。。。在
编辑: 更详细地说明数据将如何到达的可能场景。有时第一条线会在那里,有时不会。我看到的所有地址都有Ave,Way,St,尽管我不想把它作为选择的一个因素,因为我不确定它们会一直这样。第二行和第三行是alPhone(或可能的电子邮件或网站):
我的想法是
我用Scrapy来获取HTML代码。地址都在同一个div中,我想使用regex将数据进一步分解成适当的部分。我不知道该怎么做。在
编辑2:
根据Ofir的评论,我应该提到我已经用表达式来隔离电话号码和括号部分。在
电话(或可能的电子邮件或网站):
^{pr2}$括号:
\((.*?)\)
我不知道如何使用这些来构造除了这些语句之外的所有内容。在
在这种情况下,你不想集中精力做什么
<br>
)其中的每一个都可以用简单的正则表达式轻松匹配,从而很容易构造一个匹配其余的表达式(大概是地址)
据我所知,你解决问题的方法不对。在
正则表达式并不是一个神奇的工具,它可以从杂乱无章的文本元素中提取相关数据。它是一种工具,它只能从文本中提取数据,而文本中有可变部分,但也有最小的稳定结构作为锚,变量部分可以相对于文本进行本地化。在
在你的治疗中,在我看来,你首先隔离了这一部分,它包含可能的电话号码,然后是地址的1/2行。但是这样做,你就丢失了信息:之前是什么,之后是什么是锚定信息,你不应该试图在删除这些信息后获得的剩余部分中找到一些东西。在
此外,我假设您不只是想捕获一个电话号码和一个地址:您可能希望提取出本节前后的其他信息。使用一个形状良好的正则表达式,您可以一次捕获所有片段。在
所以,请给出更多的文本,在有限的部分前面有足够的字符,后面有足够的字符,这样就可以编写一个正确、更简单的regex策略来捕获所有需要的数据。triplee已经问过你了,你没有,为什么?在
这将尝试从字符串中隔离最后两行:
修剪圆括号可能最好留到单独的代码行,而不是使正则表达式进一步复杂化。在
相关问题 更多 >
编程相关推荐