基于行内容分配变量:处理指定XML结构文件并输出内容
嘿,我来帮你搞定这个需求!看起来你有一段类似标记结构的内容,想要逐行打印内容,同时给不同区块的元素分配对应的变量对吧?我用Python给你写个实用的示例方案,应该能完美匹配你的需求:
首先先把你的示例内容贴出来方便参考:
Contents Contents Contents Contents Contents Contents Contents Contents Contents Contents
实现思路
我们可以用正则表达式识别<b>和<v>标签,提取对应的名称和内容,然后用变量存储每个区块的信息,同时逐行打印输出。
代码示例
import re # 你的原始内容 raw_content = '<b n="First"> <v n="1">Contents</v> <v n="1">Contents</v> <v n="1">Contents</v> <v n="1">Contents</v> <b n="Second"> <v n="1">Contents</v> <v n="1">Contents</v> <v n="1">Contents</v> <v n="1">Contents</v> <v n="1">Contents</v> <b n="Third"> <v n="1">Contents</v>' # 定义正则匹配规则 block_pattern = re.compile(r'<b n="([^"]+)">') item_pattern = re.compile(r'<v n="1">([^<]+)</v>') # 拆分内容为各个区块 blocks = block_pattern.split(raw_content)[1:] # 跳过第一个空元素 current_section = None section_items = {} # 遍历处理每个部分 for i in range(0, len(blocks), 2): current_section = blocks[i] section_items[current_section] = [] # 提取当前区块下的所有v标签内容 items = item_pattern.findall(blocks[i+1]) section_items[current_section] = items # 逐行打印当前区块的内容,并分配变量 print(f"=== 区块: {current_section} ===") for idx, item in enumerate(items, 1): # 这里可以给每个item分配独立变量,比如用动态变量名或者直接用列表存储 # 示例:用变量名如first_item_1,不过更推荐用字典/列表管理 locals()[f"{current_section.lower()}_item_{idx}"] = item print(f"第{idx}项内容: {item}") # 验证变量是否正确分配 print("\n--- 验证变量 ---") print(f"first_item_1: {first_item_1}") print(f"second_item_3: {second_item_3}") print(f"third_item_1: {third_item_1}")
代码说明
- 用
re模块的正则表达式精准匹配<b>区块名称和<v>标签里的内容 - 用字典
section_items存储每个区块对应的所有内容,方便后续批量处理 - 通过
locals()动态给每个内容项分配独立变量(比如first_item_1对应First区块的第一个内容),当然如果你觉得动态变量不好维护,直接用字典或列表存取会更稳妥 - 逐行打印每个区块和对应的内容,清晰直观
运行这段代码后,你就能看到每行内容被打印出来,同时对应的变量也已经分配好可以直接使用啦!
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

