MongoDB查询文本中指定问候词替换为'greetings'并写入文件的技术咨询
代码验证与优化建议
先直接给结论:当前代码不完全符合你的需求,存在几个关键问题需要调整,我来帮你拆解并修正:
问题分析
你的核心需求是替换文本中的「hello」「hi」「gm」为「greetings」,但现有代码有这些明显的偏差:
- 你的
gre列表里没有包含「gm」,而且逻辑是判断整个问题文本是否在列表中,不是替换文本里的单个关键词 - 没有处理大小写变体(比如小写的
hello、hi,大写的GM) - Python3中
print"day",lis属于语法错误,需要添加括号 - 没必要对字符串做
encode('utf-8'),写入文本文件直接用原生字符串更稳妥
修正后的代码
# 定义需要替换的关键词(包含所有大小写变体和gm) target_words = {'hi', 'hello', 'gm', 'Hi', 'Hello', 'GM', 'Gm'} qus = [] # 从数据库获取指定时间范围的问题记录 quslist = db.questions.find({'date':{'$lt':dn, '$gt':dtr}}) for answers_record in quslist: qus.append(answers_record['questionText']) # 逐个处理问题文本,替换目标关键词 processed_list = [] for text in qus: # 拆分文本为单个单词,逐个检查替换 words = text.split() replaced_words = ['greetings' if word in target_words else word for word in words] # 重新组合成完整句子 processed_text = ' '.join(replaced_words) processed_list.append(processed_text) print("day", processed_list) # 使用with语句管理文件,自动关闭更安全 with open('test.txt', 'w', encoding='utf-8') as thefile: for item in processed_list: thefile.write(f"{item}\n")
进阶优化建议(更精准匹配)
如果需要避免误替换包含目标词的长单词(比如helloworld),可以用正则表达式实现独立单词匹配,同时自动忽略大小写:
import re # 正则规则:匹配独立的目标词,不区分大小写 pattern = re.compile(r'\b(hi|hello|gm)\b', re.IGNORECASE) processed_list = [pattern.sub('greetings', text) for text in qus]
这个方式会精准匹配单独出现的Hi、HELLO、gM等变体,不会误改其他包含这些字符的单词。
内容的提问来源于stack exchange,提问作者Adarsh R
相关产品推荐
相关产品推荐

