python中的循环和显示子字符串

2024-09-30 14:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想显示一个字符串中的多个子字符串。你知道吗

原始字符串: <td><strong></strong></td><td><strong></strong></td><td><strong></strong></td><td><strong></strong></td><td><strong>Mar08</strong></td><td><strong>Mar09</strong></td><td><strong>Mar10</strong></td><td><strong>Mar11</strong></td><td><strong>Mar12</strong></td><td><strong>Mar13</strong></td></tr>

要显示,预期结果[子字符串]:

Mar08 Mar09 Mar10 Mar11 Mar12 Mar13

我试过这个密码

def parseyear(list):
    sfind = "<strong>"
    efind = "</strong>"
    i = 0
    while i < len(list):
        s =  list.find(sfind,i,len(list))
        e = list.find(efind,s,len(list))
        v = list[s+len(sfind):e]
        i =  i + s
        print v

但它并没有给出预期的结果。你知道吗


Tags: 字符串lenfindtrlisttdstrongmar10
3条回答

使用regex

>>> for m in re.findall(r'<strong>([^<]+)</strong>', raw_string):
...     print m
... 
Mar08
Mar09
Mar10
Mar11
Mar12
Mar13

如果不想使用regex:

def find_substrings(s, delim_start, delim_end):
    """Find the string that is delimited by two different strings."""
    start = s.find(delim_start)
    # to calculate the length of the start delimiter
    len_delim_start = len(delim_start)
    while start != -1:
        end = s.find(delim_end, start + 1)
        substring = s[(start + len_delim_start):end]
        # print only if substring is not empty
        if substring: print substring
        start = s.find(delim_start, end + 1)

html = """
<td><strong></strong></td><td><strong></strong></td><td><strong></strong></td><td><strong></strong>
</td><td><strong>Mar08</strong></td><td><strong>Mar09</strong></td><td><strong>Mar10</strong></td>
<td><strong>Mar11</strong></td><td><strong>Mar12</strong></td><td><strong>Mar13</strong></td></tr>
"""

html2 = """
<td><strong>0.00</strong></td><td><strong>0.00</strong></td><td><strong>0.00</strong></td><td>
<strong>0.21</strong></td><td><strong>0.23</strong></td><td><strong>1.23</strong></td><td><strong>
1.30</strong></td><td><strong>1.74</strong></td><td><strong>0.87</strong></td><td><strong>
0.98</strong></td></tr>
"""

find_substrings(html2, "<strong>", "</strong>")

# output:
# 0.00
# 0.00
# 0.00
# 0.21
# 0.23
# 1.23
# 1.30
# 1.74
# 0.87
# 0.98

简单使用xml解析器,给出已知的xml数据结构。你知道吗

import xml.etree.ElementTree 
s = "<tr><td><strong></strong></td><td><strong></strong></td><td><strong></strong></td><td><strong></strong></td><td><strong>Mar08</strong></td><td><strong>Mar09</strong></td><td><strong>Mar10</strong></td><td><strong>Mar11</strong></td><td><strong>Mar12</strong></td><td><strong>Mar13</strong></td></tr>"
parsed_xml = xml.etree.ElementTree.fromstring(s)
values = [e.text for e in parsed_xml.findall("./td/strong") if e.text]
assert values == ['Mar08', 'Mar09', 'Mar10', 'Mar11', 'Mar12', 'Mar13']

相关问题 更多 >