如何使用XPath将td的rowspan属性转换为>=1的整数?
提取并转换XML中td节点的rowspan属性值
输入XML内容
<tr> <td /> <td rowspan="3" /> <td rowspan="-2" /> <td rowspan="*8#%@!" /> <td rowspan="5.7" /> <td rowspan="-4.3" /> <td rowspan="6e1" /> </tr>
需求说明
提取每个<td>节点的rowspan属性值,并将其转换为大于等于1的整数,预期输出序列如下:
1 3 1 1 5 1 60
处理逻辑
- 无
rowspan属性的<td>,直接返回1 - 有
rowspan属性的情况:- 尝试将属性值转为数值(支持科学计数法格式)
- 转换失败(含特殊字符等非法格式),返回
1 - 转换后数值小于1(负数、小于1的正数),返回
1 - 小数取整数部分(如
5.7转为5) - 合法正整数/科学计数法对应整数直接保留(如
3保留、6e1转为60)
Python实现示例
import xml.etree.ElementTree as ET # 解析目标XML xml_content = ''' <tr> <td /> <td rowspan="3" /> <td rowspan="-2" /> <td rowspan="*8#%@!" /> <td rowspan="5.7" /> <td rowspan="-4.3" /> <td rowspan="6e1" /> </tr> ''' root = ET.fromstring(xml_content) for td in root.findall('td'): rowspan_val = td.get('rowspan') if not rowspan_val: print(1) continue try: num = float(rowspan_val) int_num = int(num) print(max(int_num, 1)) except ValueError: print(1)
运行上述代码后,输出结果与预期完全一致。
内容的提问来源于stack exchange,提问作者Fravadona
相关产品推荐
相关产品推荐

