Groovy:如何移除文件中前缀重复的后续行
解决思路与代码实现
要实现移除前缀重复行的需求,核心思路是跟踪已出现过的前缀,只保留每个前缀的第一行。以下是具体的实现步骤和代码示例:
步骤说明
- 拆分字符串为行:先把你得到的文件字符串拆分成单独的行(注意处理空行和多余的换行/
<br>标签)。 - 提取前缀并去重:用一个集合来记录已经见过的前缀,遍历每一行时,提取该行的前缀(即第一个空格前的部分),如果前缀不在集合里,就保留这一行并将前缀加入集合。
- 拼接结果:最后把保留下来的行拼接成你需要的字符串格式。
代码示例(Python)
假设你已经把文件内容读取到了变量 input_str 中:
# 处理输入字符串,拆分并过滤空行 # 如果你的字符串是用换行符(\n)分隔的,把split('<br>')改成split('\n')即可 lines = [line.strip() for line in input_str.split('<br>') if line.strip()] # 用于记录已出现的前缀 seen_prefixes = set() # 存储最终保留的行 result_lines = [] for line in lines: # 提取前缀(以第一个空格为分隔符) prefix = line.split()[0] if prefix not in seen_prefixes: seen_prefixes.add(prefix) result_lines.append(line) # 拼接成你需要的最终字符串 final_output = ' '.join(result_lines) # 输出结果 print(final_output)
代码解释
- 拆分与过滤:
split('<br>')把字符串按<br>拆分成行,strip()去掉每行前后的空格,if line.strip()过滤掉空行。 - 集合去重:用集合
seen_prefixes存储已出现的前缀,集合的查询操作是O(1)的,效率很高。 - 拼接结果:
' '.join(result_lines)把保留的行用空格连接成一个字符串,和你期望的输出格式一致。
测试结果
用你给出的示例输入运行代码,会得到:
ABC-123 BLA bla ABC-234 AAA ABC-567 ddd
完全符合你的需求~
内容的提问来源于stack exchange,提问作者Ivory Micky
相关产品推荐
相关产品推荐

