【问题标题】:Extracting a string between 2 chracters using python [duplicate]使用python提取2个字符之间的字符串[重复]
【发布时间】:2016-12-09 18:48:38
【问题描述】:

我需要一个 Python 正则表达式来为我提供 ~^ 之间的所有字符串,如下所示:

~~~~ AAA ^ BBB ^ CCC > DDD ^ 

我试过了:

import re
target = ' ~~~~ AAA > ^ BBB ^ CCC > DDD ^  '
matchObj = re.findall(r'~(.*?)\^', target)
print matchObj 

但结果是:

['~~~ ABC ']

我的期望是:

['AAA', 'BBB', 'CCC', 'DDD']

['^AAA', '^BBB', '^CCC', 'DDD']

我想这样做是因为我试图从这样的 HTML 页面中提取文本:

 <td class="cell-1">
    <div><span class="value-frame">&nbsp;~~~~ ABC ^ DEF ^ HGK > LMN ^</span></div>
</td>

【问题讨论】:

  • 为什么你还有&gt;作为分隔符?

标签: python regex beautifulsoup


【解决方案1】:

只要您使用 BeautifulSoup 正确解析 HTML 并且只剩下 span 的内容,那么您应该可以将其用作 RegEx:

import re

target = ' ~~~~ AAA ^ BBB ^ CCC > DDD ^  '

matchObj = re.findall('(\w{3})', target)

print(matchObj)

输出:

['AAA', 'BBB', 'CCC', 'DDD']

【讨论】:

    【解决方案2】:

    你可以这样做:

    [x.strip('~ ') for x in re.split(' *[\^\>] *', s) if x]
    # ['AAA', 'BBB', 'CCC', 'DDD']
    

    【讨论】:

      猜你喜欢
      • 2019-10-13
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      相关资源
      最近更新 更多