【问题标题】:Python regex with devanAgarI [duplicate]带有 devanAgarI 的 Python 正则表达式 [重复]
【发布时间】:2016-09-22 07:07:37
【问题描述】:

考虑以下代码:

#! /usr/bin/python
# coding: utf-8
# Prerequisite: sudo easy_install regex
import regex
import sys
import collections

test = True

lines = []
if (test):
  test_lines = """
अ पु. संस्कृत वर्णमाला का प्रथम वर्ण [विशेषतया तीन दिन
तक चलने वाले सोम-याग (त्रिरात्र) के प्रथम दिन आज्य
इति”, पञ्च. ब्रा. 2०.14.3।
अंश पु.1 अ. भाग (देवों, पितरों एवं मनुष्यों के लिए नियत)
ऋ.वे. 1०.31.3; अ.वे. 11.1.5;1 ब. पशु-भाग, बौ.श्रौ.सू.
का नाम, ऋ. प्रा. 17.4; निदा.सू. 1०5.2०।
""".split("\n")
  lines = test_lines
else:
  lines = sys.stdin.readlines()

full_text = "\n".join(lines)
full_text = regex.sub(ur'^(\S+)\s+(पु[ .])', '####\g<1>####\g<1> \g<2>', full_text, flags=regex.UNICODE|regex.MULTILINE)
print(full_text)    

我希望上面产生以下输出:

####अ####अपु。 संस्कृत वर्णमाला का प्रथम वर्ण [विशेषतया तीन दिि तक चलने वाले सोम-याग (त्रिरात्र) इति”,पञ्च。 ब्रा。 2०.14.3। ####अंश####अंशपु.1अ。 भाग (देवों, पितरों एवं मनुष्यों के लिए नियत) ऋ.वे。 1०.31.3; अ.वे。 11.1.5;1 分钟。 पशु-भाग, बौ.श्रौ.सू。 कानाम,ऋ。 प्रा。 17.4; निदा.सू。 1०5.2०।

但我得到了未更改的文本。

【问题讨论】:

标签: python regex unicode


【解决方案1】:

正如@WiktorStribiżew 指出的那样,在处理 Unicode 文本时,字符串应该是 Unicode。

您必须使用 Python 2,因此请更改:

test_lines = """

到:

test_lines = u"""

另外,对于stdin 更改:

lines = sys.stdin.readlines()

到:

lines = [line.decode(sys.stdin.encoding) for line in sys.stdin]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2022-11-24
    • 2016-04-22
    • 2016-11-16
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多