Python解析HTML pre标签:如何将缩进文本追加至前一行
解决Bioconductor包元数据多行值的解析问题
你的现有代码没法处理元数据里不含冒号的行,这类行需要追加到前一行的对应值中,可通过逐行遍历每个包的元数据块实现需求,具体代码如下:
import requests response = requests.get('https://bioconductor.org/packages/release/bioc/VIEWS') # 分割出每个包的元数据块 package_blocks = response.text.split('\n\n') all_packages = [] for block in package_blocks: package_info = {} current_key = None # 遍历当前包的每一行元数据 for line in block.split('\n'): line = line.strip() if not line: continue if ':' in line: # 仅按第一个冒号拆分键值对 key, value = line.split(':', 1) package_info[key.strip()] = value.strip() current_key = key.strip() else: # 将无冒号的行追加到前一个键的值中 if current_key: package_info[current_key] += f' {line}' if package_info: all_packages.append(package_info) # 示例:查看第一个包的解析结果 print(all_packages[0])
关键处理逻辑:
- 先按空行拆分出单个包的元数据块,再对每个块逐行解析。
- 遇到带冒号的行时,拆分出键和值并记录当前活跃的键;遇到无冒号的行时,直接把内容追加到当前键对应的值末尾。
- 跳过空行,避免无效内容干扰解析结果。
内容的提问来源于stack exchange,提问作者Dylan Welzel
相关产品推荐
相关产品推荐

