正则表达式在中文文本上使用时不起作用
问题描述:
我创建了一个小型python函数,用于从用中文书写的字符串中删除一些不需要的元素。 那些不需要的元素在开头处带有&符号(& Something)。 该函数使用正则表达式来识别它们,将它们移除并返回字符串中最长的一部分,但没有这些不需要的元素,但由于某些原因,它不能按预期工作。 我测试了其他语言和字母表中的字符串函数,它按预期工作。正则表达式在中文文本上使用时不起作用
# -*- coding: utf-8 -*-
import re
def clean_sentence(my_text):
split_the_text = re.split(r'([&].*?\s)', my_text)
longest_sentence = max(split_the_text, key=len)
return longest_sentence
my_string = "一个神奇的鸭子飞在与&SOMETHING然后唱支歌给&PERSON"
print clean_sentence(my_string)
这是输出:
õ©Çõ©¬þÑ×ÕÑçþÜäÚ©¡Õ¡ÉÚú×Õ£¿õ©Ä&SOMETHINGþäÂÕÉÄÕö▒µö»µ¡îþ╗Ö&PERSON
答
很简单: 没有空格,但你需要一个。如果您SOMETHING
或PERSON
只有英文字符或数字,你也许可以相处:
import re
def clean_sentence(my_text):
split_the_text = re.split(r'&\w+', my_text)
longest_sentence = max(split_the_text, key=len)
return longest_sentence
my_string = "一个神奇的鸭子飞在与&SOMETHING然后唱支歌给&PERSON"
print(clean_sentence(my_string))
# 一个神奇的鸭子飞在与
+0
您能否纠正我的代码中的错误(我认为这是正则表达式)? – fghersi
那么什么*不*发生?你预期会发生什么? –
另外,你的例子会抛出一个名称错误:'split_the_copy'没有设置。 'my_string'是一个字节串;使用什么编解码器来编码文本可能很重要;也许你可以给我们'print repr(my_string)'输出,所以我们可以更好地确定它包含哪些字节。 –
我真的很抱歉,我解决了! 关于目标:字符串应返回字符串中最长的部分,而不包含那些不需要的元素。 – fghersi