如何检查文件每行最后一列是否含特定数字20并生成指定输出?
问题解决:检查每行最后一列是否为20并生成对应输出
问题背景
我有一个名为in.txt的文件,内容如下:
0000fb435 00000326fab123bc2a 20 00003b4c6 0020346afeff655423 26 0000cb341 be3652a156fffcabd5 26 . .
需要实现的功能:检查文件中每行最后一列是否为数字20,并生成指定格式的输出文件out.txt。
预期输出
out.txt内容示例:
0020fb435 00000326fab123bc2a 20 twenty_number 00003b4c6 0020346afeff655423 26 none 0000cb341 be3652a120fffcabd5 26 none . .
当前尝试的代码
with open("in.txt", "r") as fin: with open("out.txt", "w") as fout: for line in fin: line = line.strip() if '20' in line: fout.write(line + f" twenty_number \n")
当前输出问题
运行上述代码后,out.txt的输出不符合预期:
0020fb435 00000326fab123bc2a 20 twenty_number 00003b4c6 0020346afeff655423 26 twenty_number 0000cb341 be3652a120fffcabd5 26 twenty_number . .
问题原因:当前代码检查的是整行是否包含"20",而非仅验证每行的最后一列。
解决方案
修改代码,拆分每行内容并提取最后一列进行判断,代码如下:
with open("in.txt", "r") as fin: with open("out.txt", "w") as fout: for line in fin: line = line.strip() if not line: # 跳过空行 continue # 按空格拆分每行内容,取最后一列 parts = line.split() last_col = parts[-1] if last_col == '20': fout.write(f"{line} twenty_number\n") else: fout.write(f"{line} none\n")
代码说明
- 用
split()方法将每行按空格拆分为列表,通过parts[-1]获取最后一列内容 - 直接判断最后一列是否等于字符串
'20'(若需数字比较可转为int(last_col) == 20) - 无论是否匹配,都写入对应后缀,避免遗漏行
- 增加空行判断,防止处理空行时出现索引错误
内容的提问来源于stack exchange,提问作者V_S
相关产品推荐
相关产品推荐

