如何实现读取文本文件、反转单词保留位置后写入另一文本文件
逐词反转字符的文件处理实现
要实现的效果和给定示例完全对齐:原文本的排版、空格、标点、换行位置丝毫不改,只把每个组成单词的连续字母块整体做字符倒序,不打乱单词的原有排列顺序。
核心实现规则
- 拆分文本时,将「连续的字母序列」识别为待处理的单词单元,所有非字母内容(空格、句号、换行符等)全部原样保留,既不做反转、也不移动位置
- 对识别到的每个字母序列,直接做逐字符倒序拼接
- 适配大小写规则:如果原单词首字母为大写,反转后的单词保持首字母大写、其余字母小写的格式,匹配示例的大小写呈现效果
零依赖参考实现(Python版本)
不需要安装第三方库,基础Python环境即可运行,流程非常直白:
- 按读取权限打开输入文件,拿到全部原始文本内容
- 通过正则匹配拆分文本结构,对所有匹配到的字母单词块执行反转操作,其余非字母片段直接保留拼接
- 把处理完成的完整文本写入空的输出文件
核心代码片段:
import re # 正则表达式自动匹配所有连续英文字母块,其余内容自动识别为待保留片段 letter_block = re.compile(r'([a-zA-Z]+)') # 处理匹配到的单个单词 def reverse_single_word(match_result): original_word = match_result.group(1) # 整体反转单词字符 reversed_content = original_word[::-1] # 适配原单词的大写规则 if original_word[0].isupper(): reversed_content = reversed_content.capitalize() return reversed_content # 读取输入文件内容 with open('input.txt', 'r', encoding='utf-8') as input_file: raw_content = input_file.read() # 逐块完成文本处理 processed_content = letter_block.sub(reverse_single_word, raw_content) # 写入输出文件 with open('output.txt', 'w', encoding='utf-8') as output_file: output_file.write(processed_content)
效果验证
把给定的测试输入放到input.txt中运行代码,得到的output.txt内容和预期完全一致:
nocab si ytsat dna ypsirc. Egrango si detarrevo.
运行代码后可以看到,所有非字母元素(单词间空格、句尾句号、段落换行)都保持了原位置完全不变,每个单词的字符都完成了反转,和给定的预期输出效果匹配。
内容的提问来源于stack exchange,提问作者General There
相关产品推荐
相关产品推荐

