使用tenseflow的change_tense方法时引号内动词时态保持问题
解决方案
核心思路是先临时替换双引号内的内容,避免被时态转换工具修改,完成转换后再恢复原内容。具体实现步骤如下:
- 用正则表达式提取所有双引号内的文本片段并保存
- 将原句中的双引号内容替换为带索引的唯一占位符
- 对替换后的文本执行时态转换
- 将转换结果中的占位符替换回对应的原双引号内容
修改后的代码:
import tenseflow import re from django.http import Response # 根据实际使用的框架调整导入 def get(self, request): response = {} sentence = request.data.get("sentence") # 修正拼写错误:sentance → sentence if sentence: # 提取所有双引号内的内容 quoted_parts = re.findall(r'"([^"]*)"', sentence) # 替换双引号内容为占位符,避免被时态转换修改 temp_sentence = sentence for idx, part in enumerate(quoted_parts): placeholder = f"__QUOTE_{idx}__" temp_sentence = temp_sentence.replace(f'"{part}"', placeholder) # 执行时态转换 result = tenseflow.change_tense(temp_sentence, "past") # 恢复双引号内的原内容 if result: for idx, part in enumerate(quoted_parts): placeholder = f"__QUOTE_{idx}__" result = result.replace(placeholder, f'"{part}"') # 构建响应 response["status_code"] = 200 response["past_tense"] = result return Response(response) # 处理空输入的情况 response["status_code"] = 400 response["message"] = "Sentence is required" return Response(response)
补充说明
- 正则表达式
r'"([^"]*)"'精准匹配双引号内的非引号字符,确保完整提取引号内容 - 带索引的占位符避免了重复内容替换时的冲突问题
- 修正了原代码中的拼写错误,同时增加了空输入的错误处理,提升接口健壮性
内容的提问来源于stack exchange,提问作者Aditya Kumar
相关产品推荐
相关产品推荐

