python string中提取中文字符处理之后插入回原string
最近用LLM处理东西,我要求全英文处理和返回,但是的这个模型返回值中偶尔就会出现几个中文。想了个办法最小消耗token去处理这个中文问题。(prompt已经优化过了,还是会出现,应该是模型的问题)
就是用正则把中文提出来,然后做我们想要的处理,我就是把中文的list丢给LLM翻译再返回list,因为顺序是一样的,所以就可以再可以通过这种方式插入回去,相当于使用翻译的英文替换了原来的中文
import re
base_content=json_object['response']['body']['choices'][0]['message']['content'] #我的字符串来源,你直接放你自己的就可以了
chinese_list = re.findall(r'[\u4e00-\u9fff]+', base_content)
#...做你需要的处理,我这边用的是LLM翻译成英文
def _insert_chinese_back(self,original_text, chinese_list):
parts = re.split(r'([\u4e00-\u9fff]+)', original_text)
parts = [part for part in parts if part]
result = []
chinese_iter = iter(chinese_list)
for part in parts:
if re.match(r'[\u4e00-\u9fff]+', part):
result.append(next(chinese_iter, part))
else:
result.append(part)
return ''.join(result)
base_content=self._insert_chinese_back(base_content,chinese_list)