我今天需要从一堆字符串中删除中文,并且正在寻找一个简单的Python正则表达式。有什么建议?
对于狭窄的Unicode构建的python的简短但相对全面的答案(不包括> 65535的常规,只能通过代理对在狭窄的Unicode构建中表示):
RE = re.compile(u'[⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〺〻㐀-䶵一-鿃豈-鶴侮-頻並-龎]', re.UNICODE)
nochinese = RE.sub('', mystring)
用于构建RE的代码,以及是否需要在辅助平面中检测汉字以进行广泛构建:
# -*- coding: utf-8 -*-
import re
LHan = [[0x2E80, 0x2E99], # Han # So [26] CJK RADICAL REPEAT, CJK RADICAL RAP
[0x2E9B, 0x2EF3], # Han # So [89] CJK RADICAL CHOKE, CJK RADICAL C-SIMPLIFIED TURTLE
[0x2F00, 0x2FD5], # Han # So [214] KANGXI RADICAL ONE, KANGXI RADICAL FLUTE
0x3005, # Han # Lm IDEOGRAPHIC ITERATION MARK
0x3007, # Han # Nl IDEOGRAPHIC NUMBER ZERO
[0x3021, 0x3029], # Han # Nl [9] HANGZHOU NUMERAL ONE, HANGZHOU NUMERAL NINE
[0x3038, 0x303A], # Han # Nl [3] HANGZHOU NUMERAL TEN, HANGZHOU NUMERAL THIRTY
0x303B, # Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
[0x3400, 0x4DB5], # Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400, CJK UNIFIED IDEOGRAPH-4DB5
[0x4E00, 0x9FC3], # Han # Lo [20932] CJK UNIFIED IDEOGRAPH-4E00, CJK UNIFIED IDEOGRAPH-9FC3
[0xF900, 0xFA2D], # Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900, CJK COMPATIBILITY IDEOGRAPH-FA2D
[0xFA30, 0xFA6A], # Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30, CJK COMPATIBILITY IDEOGRAPH-FA6A
[0xFA70, 0xFAD9], # Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70, CJK COMPATIBILITY IDEOGRAPH-FAD9
[0x20000, 0x2A6D6], # Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000, CJK UNIFIED IDEOGRAPH-2A6D6
[0x2F800, 0x2FA1D]] # Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800, CJK COMPATIBILITY IDEOGRAPH-2FA1D
def build_re():
L = []
for i in LHan:
if isinstance(i, list):
f, t = i
try:
f = unichr(f)
t = unichr(t)
L.append('%s-%s' % (f, t))
except:
pass # A narrow python build, so can't use chars > 65535 without surrogate pairs!
else:
try:
L.append(unichr(i))
except:
pass
RE = '[%s]' % ''.join(L)
print 'RE:', RE.encode('utf-8')
return re.compile(RE, re.UNICODE)
RE = build_re()
print RE.sub('', u'美国').encode('utf-8')
print RE.sub('', u'blah').encode('utf-8')
本文向大家介绍使用Python Regex查找给定字符串中的所有“ 10 + 1”模式,包括了使用Python Regex查找给定字符串中的所有“ 10 + 1”模式的使用技巧和注意事项,需要的朋友参考一下 我们需要在给定的字符串中找到正则表达式模式10 + 1。为此,我们可以使用python中可用的re模块。这个包有一个叫做find all的方法,它接受正则表达式和我们要搜索的字符串。它为我们提
本文向大家介绍使用Python Regex查找给定字符串中的所有“ 1(0+)1”模式,包括了使用Python Regex查找给定字符串中的所有“ 1(0+)1”模式的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,使用正则表达式查找字符串中所有1(0 + 1)的出现。我们在Python中有一个re模块,可以帮助我们使用正则表达式。 让我们看一个示例案例。 请按照以下步骤编
工作解决方案: 破“解”: 我们将单词字符定义为以下任一项: null null 第一行包含一个整数n,表示句子的数目。后面的每一行都包含一个由非单词字符分隔的单词组成的句子。下一行包含一个整数,表示查询的数量。后续行中的每一行都包含一个要检查的字符串。 制约因素 1≤n≤100 1≤q≤10 作为现有的子字出现时间。 作为悲观主义者的子词出现时间。 作为Optimist的子词出现时间。 whil
问题内容: 使用正则表达式的python中的代码可以执行类似这样的操作 谢谢 问题答案: 这是您需要做的所有事情: 正如叶立昂指出:(我几乎引用) 是的“非贪婪”版本。它使正则表达式匹配的字符数最少,而不是最多。贪婪的版本会给出字符串;非贪婪版本‘String 1,String 2,String3’ 另外(再次使用Johan,),如果您想接受空字符串,请更改为。星号表示零个或多个-加号表示至少一个
我面临的问题是,我必须将一个更大的html和javascript项目翻译成几种语言。html的内容没有问题,但是大量的javascript文件是有问题的,因为我在开发过程中有点懒。例如,如果我需要一个消息文本,我只是把它添加在有关的位置。 我现在的方法是,我对每一次出现的和,都使用内置文件搜索(Eclipse),这将非常耗时,错误不可避免。 以下是文件中出现的一些示例: 有时我混合使用和,有时一个
我可以使用哪些python包来找出特定的“搜索字符串”位于哪个页面上? 我研究了几个python pdf包,但不知道我应该使用哪一个。PyPDF似乎没有这个功能和PDFMiner似乎是一个过度杀这样简单的任务。有什么建议吗? 更准确地说:我有几个PDF文档,我想提取介于字符串“Begin”和字符串“End”之间的页面。