python将输入文件中的换行符替换为逗号

import os

def replace_newlines_with_commas():
    """
    交互式替换文件中的所有换行符为逗号
    - 提示用户输入文件路径
    - 自动检测文件是否存在
    - 生成处理后的新文件(原文件名+_processed后缀)
    """
    # 1. 获取用户输入的文件路径
    while True:
        input_path = input("请输入需要处理的文件路径(例如:./名单.txt 或 C:/docs/列表2.txt):").strip()
        # 去除路径两端的引号(如果用户输入时带了引号)
        input_path = input_path.strip('"\'')
        
        # 检查文件是否存在
        if os.path.exists(input_path):
            break
        else:
            print(f"❌ 错误:文件 '{input_path}' 不存在,请重新输入!")
    
    # 2. 构造输出文件路径(原文件同名+_processed)
    file_dir, file_name = os.path.split(input_path)
    file_base, file_ext = os.path.splitext(file_name)
    output_path = os.path.join(file_dir, f"{file_base}_processed{file_ext}")
    
    try:
        # 3. 读取文件内容(兼容UTF-8/GBK编码,解决中文乱码问题)
        encodings = ['utf-8', 'gbk', 'gb2312']
        content = None
        for encoding in encodings:
            try:
                with open(input_path, 'r', encoding=encoding) as f:
                    content = f.read()
                print(f"✅ 成功读取文件,使用编码:{encoding}")
                break
            except UnicodeDecodeError:
                continue
        
        if content is None:
            print("❌ 错误:无法识别文件编码(尝试了UTF-8/GBK/GB2312)")
            return
        
        # 4. 替换所有换行符(兼容\n、\r\n、\r)
        # 先统一转换为\n,再替换为逗号,避免重复替换
        content = content.replace('\r\n', '\n').replace('\r', '\n')
        processed_content = content.replace('\n', ',')
        
        # 5. 去除末尾多余的逗号(如果文件最后一行是换行)
        if processed_content.endswith(','):
            processed_content = processed_content[:-1]
        
        # 6. 写入处理后的内容到新文件
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(processed_content)
        
        # 7. 输出处理结果
        print("\n📊 处理完成!")
        print(f"📝 原文件:{input_path}")
        print(f"📝 新文件:{output_path}")
        print(f"🔢 替换的换行符数量:{content.count('\n')}")
        print(f"🔍 处理后内容预览(前150字符):")
        print(processed_content[:150] + "..." if len(processed_content) > 150 else processed_content)
    
    except Exception as e:
        print(f"\n❌ 处理失败:{str(e)}")

# 运行脚本
if __name__ == "__main__":
    print("=== 换行符替换为逗号工具 ===\n")
    replace_newlines_with_commas()
    input("\n按回车键退出...")  # 防止运行后窗口直接关闭
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容