LibreOffice Calc:基于外部对应表匹配列元素并生成新列
基于映射表转换文本序列为数值序列的实现方案
嘿,我来帮你搞定这个文本转换需求!这里提供一个用Python实现的方案,既能高效完成单词到数值的映射转换,又不用把冗长的映射表合并到最终结果文件里,完全匹配你要的输出格式。
前置准备
先确认你的两个文件结构:
- 映射表文件(比如命名为
mapping.txt):
Column A Column B a 1 b 2 c 3 d 4 e 5 f 6 g 7
- 待转换的序列文件(比如命名为
input.txt):
a b c d e f g g f e d c b a ...
代码实现
下面的代码会先加载映射表为字典(快速查询的关键),然后逐行处理输入序列,输出你要的双列格式:
# 第一步:加载映射表到字典,方便快速查找 word_to_num = {} with open('mapping.txt', 'r') as map_file: next(map_file) # 跳过表头行 for line in map_file: word, num = line.strip().split() word_to_num[word] = num # 第二步:处理输入序列并输出结果 print("Column A Column B") with open('input.txt', 'r') as input_file: for line in input_file: cleaned_line = line.strip() # 处理省略号行 if cleaned_line == "...": print("... ...") continue # 跳过空行(如果有的话) if not cleaned_line: continue # 拆分原序列元素,转换为对应数值 original_words = cleaned_line.split() converted_nums = [word_to_num[word] for word in original_words] # 拼接成要求的格式输出 print(f"{' '.join(original_words)} {' '.join(converted_nums)}")
代码说明
- 映射表加载:把映射表转换成字典
word_to_num,这样每个单词对应的数值可以瞬间查到,处理大文件时效率很高。 - 输入处理:逐行读取输入文件,自动跳过空行,对省略号行直接输出
... ...;正常行则拆分每个单词,用列表推导式快速转换成数值序列。 - 格式输出:严格按照你要的格式,第一行是表头,后续每行左边是原单词序列,右边是对应的数值序列。
运行效果
运行后你会得到这样的输出:
Column A Column B a b c d e f g 1 2 3 4 5 6 7 g f e d c b a 7 6 5 4 3 2 1 ... ...
内容的提问来源于stack exchange,提问作者Maltreão Jan
相关产品推荐
相关产品推荐

