如何让Python pyttsx3读取CSV文件时不朗读‘backslash n’等非文本内容
问题与代码
以下是用于读取CSV内容并转为语音播放的Python代码:
import csv import pyttsx3 engine = pyttsx3.init() with open('file.csv', 'r', encoding='utf8') as csv_file: csv_reader = csv.reader(csv_file) next(csv_reader) for line in csv_reader: title = line[1] text = line[5] print(title,text) while True: speech = (title,text) engine.say(speech) engine.runAndWait()
代码可正常运行,但存在问题:语音会朗读“backslash n”这类非预期的转义字符内容。想明确是需要优化CSV文件格式,还是更换其他文本转语音库?
解决方案
优先修复代码问题
- 避免传入元组给
engine.say
你当前将(title, text)元组直接传给engine.say,pyttsx3会把元组的结构(括号、逗号)以及内容里的转义字符表示都当作普通文本朗读。需要将两者拼接成字符串:
# 用f-string拼接,自动处理空格 speech = f"{title} {text}"
- 清理转义字符
如果CSV内容里存在\n或“backslash n”这类文本,直接用字符串替换处理:
# 替换转义字符表示为空格,也可根据需求改为空字符串 clean_title = title.replace("\\n", " ").replace("backslash n", " ") clean_text = text.replace("\\n", " ").replace("backslash n", " ") speech = f"{clean_title} {clean_text}"
关于CSV格式与语音库的选择
- CSV格式优化:如果CSV里的转义字符是手动输入的冗余内容,可直接在CSV文件中替换或删除这类内容,从源头避免问题。
- 语音库更换:修复代码后如果仍不满意,可尝试
gTTS或elevenlabs等库,但多数情况下无需更换,代码修复即可解决问题。
内容的提问来源于stack exchange,提问作者AEdgecombe
相关产品推荐
相关产品推荐

