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

标签 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

最佳答案

非常简单: 没有空格,但您需要一个。如果您的 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))
# 一个神奇的鸭子飞在与

关于python - 正则表达式在中文文本上使用时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39128724/

相关文章:

python - 使用 Pandas 将字符串列表转换为虚拟变量

python - Pandas 数据框 : how do I split one row into multiple rows by multi-value column?

python - 我应该使用什么模式来打印以下代码的日期、时间和进程 ID?

python-2.7 - 在 Python 中使用 Opencv 从图像中减去背景

python - Elementtree 设置属性顺序

python - 区域提案标准化的最快算法

regex - 在定界符的第一个/第n个出现时进行拆分

javascript - 正则表达式获取 URL 的特定部分

python - 使用 matplotlib 绘制圆圈时出错

Python3 破坏有效的 Python2 代码 : How can I send a series of bytes in a buffer in a socket in Python?