如何移除每行每个单词的前3个字符?Python实现求助
解决:删除每行中每个单词的前3个字符
你的原代码问题在于直接遍历了整个文件字符串的每个字符,而非按行处理、按逗号分割出单个单词进行操作,所以输出完全不符合预期。
正确实现思路
- 按行读取文件(大文件场景更高效,也符合逐行处理的需求)
- 清理每行的冗余字符(换行符、首尾引号)
- 用逗号分割每行,得到单个元素列表
- 对每个元素:除了
END保留原样,其余截取从第3个字符开始的子串 - 重新拼接成要求的格式,输出或写入文件
完整代码示例
# 读取并处理文件,直接输出结果 with open(r'D:\pythonProject\block1.txt', 'r') as input_file: for line in input_file: # 去除换行符和首尾的引号 cleaned_line = line.strip().strip('"') # 分割成单个元素 elements = cleaned_line.split(',') # 处理每个元素:非END的元素截取[3:],END保持不变 processed_elements = [elem[3:] if elem != 'END' else elem for elem in elements] # 重新拼接成目标格式并输出 result_line = '"' + ','.join(processed_elements) + '"' print(result_line)
写入到新文件的版本
如果需要将处理结果保存到新文件,可使用以下代码:
with open(r'D:\pythonProject\block1_processed.txt', 'w') as output_file: with open(r'D:\pythonProject\block1.txt', 'r') as input_file: for line in input_file: cleaned_line = line.strip().strip('"') elements = cleaned_line.split(',') processed_elements = [elem[3:] if elem != 'END' else elem for elem in elements] result_line = '"' + ','.join(processed_elements) + '"' + '\n' output_file.write(result_line)
原代码问题解析
data = file1.read()将整个文件内容读取为一个长字符串[sub[3:] for sub in data]是遍历这个长字符串的每个字符,每个字符长度不足3,所以结果都是空字符串列表,完全偏离需求
内容的提问来源于stack exchange,提问作者Pink Chayanit
相关产品推荐
相关产品推荐

