【问题标题】:How do I extract the characters in between the specific set of characters in a string python(regex)? [closed]如何提取字符串python(正则表达式)中特定字符集之间的字符? [关闭]
【发布时间】:2020-05-05 20:13:16
【问题描述】:

我一直在尝试从 html 中提取图像源链接、order_detail 链接、成本(卢比)和产品名称(未格式化并且是多行的)。 我尝试了很多解决方案,主要是开始和结束,但没有一个有效。 下图为示例分区(请复制到记事本中)。

txt = """div>
    <div class="ShLswe">
       <a class="_2WFi0x" href="/order_details?order_id=OD40818094004&amp;item_id=OD408180940040000&amp;unit_id=OD408180940040000000">
          <div class="row">
             <div class="col-6-12">
                <div class="row">
                   <div class="col-3-12">
                      <div class="J2h1WZ">
                         <div class="_3BTv9X" style="height: 75px; width: 75px;"><img class="_1Nyybr  _30XEf0" alt="" src="https://rukminim1.flixcart.com/image/75/75/usb-adaptor/s/9/8/tp-link-150-mbps-wireless-n-original-imad8rruefj6rf3y.jpeg"></div>
                      </div>
                   </div>
                   <div class="col-8-12">
                      <div class="_3D-3p2">
                         <span class="row _13y4_y _1iu0PI">TP-LINK 150 Mbps TL-WN721N Wireless N</span>
                         <div class="row _3i00zY"><span class="_3i00zY _2n1WrW">Seller: </span><span class="_2dTbPB">WS Retail</span></div>
                      </div>
                   </div>
                </div>
             </div>
             <div class="col-2-12 JL36Xz">₹512</div>
             <div class="col-4-12 _3Yi3bU">
                <div>
                   <div class="_30ud5x _3ELbo9"></div>
                   <span class="_7BRRQk">Delivered on Aug 20, 2014</span>
                   <div class="_2t-3dH">Your item has been delivered</div>
                </div>
                <div class="d-uGDa"></div>
                <div class="paz6BF">
                   <div class="_1S3Y5S row">
       <a class="FlPMmo"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTknIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTggMTgiPgoJPGcgZmlsbD0nbm9uZSc+CgkJPHBvbHlnb24gaWQ9IlNoYXBlIiBmaWxsPSIjMjg3NEYxIiBwb2ludHM9IjkgMTIuMDYyNSAxMy42Mzc1IDE1LjQzNzUgMTEuODYyNSA5Ljk4NzUgMTYuNSA2LjY4NzUgMTAuODEyNSA2LjY4NzUgOSAxLjA2MjUgNy4xODc1IDYuNjg3NSAxLjUgNi42ODc1IDYuMTM3NSA5Ljk4NzUgNC4zNjI1IDE1LjQzNzUiIC8+CgkJPHBvbHlnb24gaWQ9IlNoYXBlIiBwb2ludHM9IjAgMCAxOCAwIDE4IDE4IDAgMTgiIC8+Cgk8L2c+Cjwvc3ZnPg==" class="_3Q4GqT col-1-5"><span class="_3zvrLw col-3-5">Rate &amp; Review Product</span></a></div></div></div></div></a>
    </div>
    </div>"""

    x = re.match(r'^<img class="_1Nyybr  _30XEf0" alt="" src="(.*?)\.jpeg$', txt)

    print(x)

没有输出

注意:上面的 txt 包含与其他部门相同的模式(类名)

1) 图像 = 开始:&lt;img class="_1Nyybr _30XEf0" alt="" src=" 结束:.jpeg"&gt;

需要的字符:https://rukminim1.flixcart.com/image/75/75/usb-adaptor/s/9/8/tp-link-150-mbps-wireless-n-original-imad8rruefj6rf3y.jpeg

2) 名称 = 开始:&lt;span class="row _13y4_y _1iu0PI"&gt; 结束:&lt;/span&gt;

需要的字符:TP-LINK 150 Mbps TL-WN721N Wireless N

3) 成本 = 开始:&lt;div class="col-2-12 JL36Xz"&gt;₹ 结束:&lt;/div&gt;

需要的字符:512

以上所有内容都非常相似,解决方案也是如此,但是字符串非常模糊,我在操作它时遇到了很多错误。 我只需要提取所需的字符并将其存储在列表中。任何方法都值得赞赏。谢谢

【问题讨论】:

  • 为什么不至少部分地使用适当的 HTML 解析器?
  • 关于正则表达式,删除 ^$ 并使用 re.search
  • 您可以使用beautiful soup 轻松完成这一切。

标签: python python-3.x regex


【解决方案1】:
import re

txt = """div><div class="ShLswe"><a class="_2WFi0x" href="/order_details?order_id=OD40818094004&amp;item_id=OD408180940040000&amp;unit_id=OD408180940040000000"><div class="row"><div class="col-6-12"><div class="row"><div class="col-3-12"><div class="J2h1WZ"><div class="_3BTv9X" style="height: 75px; width: 75px;"><img class="_1Nyybr  _30XEf0" alt="" src="https://rukminim1.flixcart.com/image/75/75/usb-adaptor/s/9/8/tp-link-150-mbps-wireless-n-original-imad8rruefj6rf3y.jpeg"></div></div></div><div class="col-8-12"><div class="_3D-3p2"><span class="row _13y4_y _1iu0PI">TP-LINK 150 Mbps TL-WN721N Wireless N</span><div class="row _3i00zY"><span class="_3i00zY _2n1WrW">Seller: </span><span class="_2dTbPB">WS Retail</span></div></div></div></div></div><div class="col-2-12 JL36Xz">₹512</div><div class="col-4-12 _3Yi3bU"><div><div class="_30ud5x _3ELbo9"></div><span class="_7BRRQk">Delivered on Aug 20, 2014</span><div class="_2t-3dH">Your item has been delivered</div></div><div class="d-uGDa"></div><div class="paz6BF"><div class="_1S3Y5S row"><a class="FlPMmo"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTknIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTggMTgiPgoJPGcgZmlsbD0nbm9uZSc+CgkJPHBvbHlnb24gaWQ9IlNoYXBlIiBmaWxsPSIjMjg3NEYxIiBwb2ludHM9IjkgMTIuMDYyNSAxMy42Mzc1IDE1LjQzNzUgMTEuODYyNSA5Ljk4NzUgMTYuNSA2LjY4NzUgMTAuODEyNSA2LjY4NzUgOSAxLjA2MjUgNy4xODc1IDYuNjg3NSAxLjUgNi42ODc1IDYuMTM3NSA5Ljk4NzUgNC4zNjI1IDE1LjQzNzUiIC8+CgkJPHBvbHlnb24gaWQ9IlNoYXBlIiBwb2ludHM9IjAgMCAxOCAwIDE4IDE4IDAgMTgiIC8+Cgk8L2c+Cjwvc3ZnPg==" class="_3Q4GqT col-1-5"><span class="_3zvrLw col-3-5">Rate &amp; Review Product</span></a></div></div></div></div></a></div></div>"<"""


regex = re.compile(r"<img class=\"_1Nyybr  _30XEf0\" alt=\"\" src=\"(?P<image>.+?)\.jpeg.*<span class=\"row _13y4_y _1iu0PI\">(?P<name>.+?)</span>.*<div class=\"col-2-12 JL36Xz\">\D*(?P<cost>\d+?)</div>")

result = regex.search(txt)
print(result.group("image"))
print(result.group("name"))
print(result.group("cost"))

输出是:

https://rukminim1.flixcart.com/image/75/75/usb-adaptor/s/9/8/tp-link-150-mbps-wireless-n-original-imad8rruefj6rf3y
TP-LINK 150 Mbps TL-WN721N Wireless N
512

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多