在中文文本上使用正则表达式时不起作用

时间:2016-08-24 16:35:46

标签: python regex python-2.7

我创建了一个小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

1 个答案:

答案 0 :(得分:1)

非常简单: 没有空格但你需要一个空格。如果您的SOMETHINGPERSON只是英文字符或数字,那么您可以与之相处:

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))
# 一个神奇的鸭子飞在与