簡體   English   中英

如何使用正則表達式匹配 Python 中的所有 unicode 小寫字符?

[英]How do I match all unicode lowercase characters in Python with a regular expression?

我正在嘗試編寫一個與 Python 3 中的 Unicode 小寫字符匹配的正則表達式。我正在使用re庫。 例如, re.findall(some_pattern, 'u∏ñKθ')應該返回['u', 'ñ', 'θ']

在 Sublime Text 中,我可以簡單地輸入[[:lower:]]來查找這些字符。

我知道 Python 可以匹配任何 Unicode 字符re.compile('[^\W\d_]') ,但我特別需要區分大寫和小寫。 我也知道re.compile('[az]')將匹配任何 ASCII 小寫字符,但我的數據是 UTF-8,它包含許多非 ASCII 字符——我檢查了。

Python 3 中的正則表達式可以做到這一點,還是我需要采取另一種方法? 我知道其他方法可以做到這一點。 我只是希望使用正則表達式。

如果可以接受使用第三方包,您可以使用regex包。

>>> import regex
>>> s = 'ABCabcÆæ'
>>> m = regex.findall(r'[[:lower:]]', s)
>>> m
['a', 'b', 'c', 'æ']

您可以使用支持 POSIX 字符類的regex 模塊

import regex 

>>> regex.findall('[[:lower:]]', 'u∏ñKθ')
['u', 'ñ', 'θ']

或者,使用\\p{Ll}\\p{Lowercase_Letter}Unicode 類別類

>>> regex.findall(r'\p{Ll}', 'u∏ñKθ')
['u', 'ñ', 'θ']

或者只是使用 Python 的字符串邏輯:

>>> [c for c in 'u∏ñKθ' if c.islower()]
['u', 'ñ', 'θ']

在任何一種情況下,都要注意像這樣的字符串:

>>> s2='\u0061\u0300\u00E0'
>>> s2
'àà'

第一字形'à'是的結果'a'與的結合字符'̀' ,其中第二'à'是該特定碼點的結果。 如果您在此處使用字符類,它將匹配'a'而不是組合重音:

>>> regex.findall('[[:lower:]]', s2)
['a', 'à']
>>> [c for c in s2 if c.islower()]
['a', 'à']

為了解決這個問題,您需要在更復雜的正則表達式模式中考慮到這一點或規范化字符串

>>> regex.findall('[[:lower:]]', unicodedata.normalize('NFC',s2))
['à', 'à']

或按字素循環遍歷字素:

>>> [c for c in regex.findall(r'\X', s2) if c.islower()]
['à', 'à']

您不需要使用 PyPi regex庫(盡管我強烈建議在此處使用它,因為它支持 POSIX 字符類(如[:lower:] )和 Unicode 屬性類如\\p{Ll} ):

import re, sys
lower = '[{}]'.format("".join([chr(i) for i in range(sys.maxunicode) if chr(i).islower()]))
print(re.findall(lower, 'ABCabcÆæóżźę'))
# => ['a', 'b', 'c', 'æ', 'ó', 'ż', 'ź', 'ę']

請參閱Python 證明

結果

['a', 'b', 'c', 'æ', 'ó', 'ż', 'ź', 'ę']

我創建了以下 Python 腳本,以根據islower()字符串方法獲取所有小寫字母,並找到連續范圍以創建一個大字符 class 正則表達式,以識別所有小寫字母。

import itertools, re, sys

lowercaseOrdinals = [i for i in range(sys.maxunicode) if chr(i).islower()]

def ranges(i):
    for a, b in itertools.groupby(enumerate(i), lambda pair: pair[1] - pair[0]):
        b = list(b)
        yield b[0][1], b[-1][1]

lowercaseRegex = '['
for startRangeOrdinal, endRangeOrdinal in ranges(lowercaseOrdinals):
    lowercaseRegex += chr(startRangeOrdinal) + '-' + chr(endRangeOrdinal)
lowercaseRegex += ']'

with open('lower.txt', 'w', encoding='utf-8') as fileObj:
    fileObj.write(lowercaseRegex)

它生成的 1,958 個字符長的字符 class 正則表達式匹配任何小寫 unicode 字符在這里:

[a-zª-ªµ-µº-ºß-öø-ÿā-āă-ăą-ąć-ćĉ-ĉċ-ċč-čď-ďđ-đē-ēĕ-ĕė-ėę-ęě-ěĝ-ĝğ-ğġ-ġģ-ģĥ-ĥħ-ħĩ-ĩī-īĭ-ĭį-įı-ıij-ijĵ-ĵķ-ĸĺ-ĺļ-ļľ-ľŀ-ŀł-łń-ńņ-ņň-ʼnŋ-ŋō-ōŏ-ŏő-őœ-œŕ-ŕŗ-ŗř-řś-śŝ-ŝş-şš-šţ-ţť-ťŧ-ŧũ-ũū-ūŭ-ŭů-ůű-űų-ųŵ-ŵŷ-ŷź-źż-żž-ƀƃ-ƃƅ-ƅƈ-ƈƌ-ƍƒ-ƒƕ-ƕƙ-ƛƞ-ƞơ-ơƣ-ƣƥ-ƥƨ-ƨƪ-ƫƭ-ƭư-ưƴ-ƴƶ-ƶƹ-ƺƽ-ƿdž-džlj-ljnj-njǎ-ǎǐ-ǐǒ-ǒǔ-ǔǖ-ǖǘ-ǘǚ-ǚǜ-ǝǟ-ǟǡ-ǡǣ-ǣǥ-ǥǧ-ǧǩ-ǩǫ-ǫǭ-ǭǯ-ǰdz-dzǵ-ǵǹ-ǹǻ-ǻǽ-ǽǿ-ǿȁ-ȁȃ-ȃȅ-ȅȇ-ȇȉ-ȉȋ-ȋȍ-ȍȏ-ȏȑ-ȑȓ-ȓȕ-ȕȗ-ȗș-șț-țȝ-ȝȟ-ȟȡ-ȡȣ-ȣȥ-ȥȧ-ȧȩ-ȩȫ-ȫȭ-ȭȯ-ȯȱ-ȱȳ-ȹȼ-ȼȿ-ɀɂ-ɂɇ-ɇɉ-ɉɋ-ɋɍ-ɍɏ-ʓʕ-ʸˀ-ˁˠ-ˤͅ-ͅͱ-ͱͳ-ͳͷ-ͷͺ-ͽΐ-ΐά-ώϐ-ϑϕ-ϗϙ-ϙϛ-ϛϝ-ϝϟ-ϟϡ-ϡϣ-ϣϥ-ϥϧ-ϧϩ-ϩϫ-ϫϭ-ϭϯ-ϳϵ-ϵϸ-ϸϻ-ϼа-џѡ-ѡѣ-ѣѥ-ѥѧ-ѧѩ-ѩѫ-ѫѭ-ѭѯ-ѯѱ-ѱѳ-ѳѵ-ѵѷ-ѷѹ-ѹѻ-ѻѽ-ѽѿ-ѿҁ-ҁҋ-ҋҍ-ҍҏ-ҏґ-ґғ-ғҕ-ҕҗ-җҙ-ҙқ-қҝ-ҝҟ-ҟҡ-ҡң-ңҥ-ҥҧ-ҧҩ-ҩҫ-ҫҭ-ҭү-үұ-ұҳ-ҳҵ-ҵҷ-ҷҹ-ҹһ-һҽ-ҽҿ-ҿӂ-ӂӄ-ӄӆ-ӆӈ-ӈӊ-ӊӌ-ӌӎ-ӏӑ-ӑӓ-ӓӕ-ӕӗ-ӗә-әӛ-ӛӝ-ӝӟ-ӟӡ-ӡӣ-ӣӥ-ӥӧ-ӧө-өӫ-ӫӭ-ӭӯ-ӯӱ-ӱӳ-ӳӵ-ӵӷ-ӷӹ-ӹӻ-ӻӽ-ӽӿ-ӿԁ-ԁԃ-ԃԅ-ԅԇ-ԇԉ-ԉԋ-ԋԍ-ԍԏ-ԏԑ-ԑԓ-ԓԕ-ԕԗ-ԗԙ-ԙԛ-ԛԝ-ԝԟ-ԟԡ-ԡԣ-ԣԥ-ԥԧ-ԧԩ-ԩԫ-ԫԭ-ԭԯ-ԯՠ-ֈა-ჺჽ-ჿᏸ-ᏽᲀ-ᲈᴀ-ᶿḁ-ḁḃ-ḃḅ-ḅḇ-ḇḉ-ḉḋ-ḋḍ-ḍḏ-ḏḑ-ḑḓ-ḓḕ-ḕḗ-ḗḙ-ḙḛ-ḛḝ-ḝḟ-ḟḡ-ḡḣ-ḣḥ-ḥḧ-ḧḩ-ḩḫ-ḫḭ-ḭḯ-ḯḱ-ḱḳ-ḳḵ-ḵḷ-ḷḹ-ḹḻ-ḻḽ-ḽḿ-ḿṁ-ṁṃ-ṃṅ-ṅṇ-ṇṉ-ṉṋ-ṋṍ-ṍṏ-ṏṑ-ṑṓ-ṓṕ-ṕṗ-ṗṙ-ṙṛ-ṛṝ-ṝṟ-ṟṡ-ṡṣ-ṣṥ-ṥṧ-ṧṩ-ṩṫ-ṫṭ-ṭṯ-ṯṱ-ṱṳ-ṳṵ-ṵṷ-ṷṹ-ṹṻ-ṻṽ-ṽṿ-ṿẁ-ẁẃ-ẃẅ-ẅẇ-ẇẉ-ẉẋ-ẋẍ-ẍẏ-ẏẑ-ẑẓ-ẓẕ-ẝẟ-ẟạ-ạả-ảấ-ấầ-ầẩ-ẩẫ-ẫậ-ậắ-ắằ-ằẳ-ẳẵ-ẵặ-ặẹ-ẹẻ-ẻẽ-ẽế-ếề-ềể-ểễ-ễệ-ệỉ-ỉị-ịọ-ọỏ-ỏố-ốồ-ồổ-ổỗ-ỗộ-ộớ-ớờ-ờở-ởỡ-ỡợ-ợụ-ụủ-ủứ-ứừ-ừử-ửữ-ữự-ựỳ-ỳỵ-ỵỷ-ỷỹ-ỹỻ-ỻỽ-ỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶ-ᾷι-ιῂ-ῄῆ-ῇῐ-ΐῖ-ῗῠ-ῧῲ-ῴῶ-ῷⁱ-ⁱⁿ-ⁿₐ-ₜℊ-ℊℎ-ℏℓ-ℓℯ-ℯℴ-ℴℹ-ℹℼ-ℽⅆ-ⅉⅎ-ⅎⅰ-ⅿↄ-ↄⓐ-ⓩⰰ-ⱞⱡ-ⱡⱥ-ⱦⱨ-ⱨⱪ-ⱪⱬ-ⱬⱱ-ⱱⱳ-ⱴⱶ-ⱽⲁ-ⲁⲃ-ⲃⲅ-ⲅⲇ-ⲇⲉ-ⲉⲋ-ⲋⲍ-ⲍⲏ-ⲏⲑ-ⲑⲓ-ⲓⲕ-ⲕⲗ-ⲗⲙ-ⲙⲛ-ⲛⲝ-ⲝⲟ-ⲟⲡ-ⲡⲣ-ⲣⲥ-ⲥⲧ-ⲧⲩ-ⲩⲫ-ⲫⲭ-ⲭⲯ-ⲯⲱ-ⲱⲳ-ⲳⲵ-ⲵⲷ-ⲷⲹ-ⲹⲻ-ⲻⲽ-ⲽⲿ-ⲿⳁ-ⳁⳃ-ⳃⳅ-ⳅⳇ-ⳇⳉ-ⳉⳋ-ⳋⳍ-ⳍⳏ-ⳏⳑ-ⳑⳓ-ⳓⳕ-ⳕⳗ-ⳗⳙ-ⳙⳛ-ⳛⳝ-ⳝⳟ-ⳟⳡ-ⳡⳣ-ⳤⳬ-ⳬⳮ-ⳮⳳ-ⳳⴀ-ⴥⴧ-ⴧⴭ-ⴭꙁ-ꙁꙃ-ꙃꙅ-ꙅꙇ-ꙇꙉ-ꙉꙋ-ꙋꙍ-ꙍꙏ-ꙏꙑ-ꙑꙓ-ꙓꙕ-ꙕꙗ-ꙗꙙ-ꙙꙛ-ꙛꙝ-ꙝꙟ-ꙟꙡ-ꙡꙣ-ꙣꙥ-ꙥꙧ-ꙧꙩ-ꙩꙫ-ꙫꙭ-ꙭꚁ-ꚁꚃ-ꚃꚅ-ꚅꚇ-ꚇꚉ-ꚉꚋ-ꚋꚍ-ꚍꚏ-ꚏꚑ-ꚑꚓ-ꚓꚕ-ꚕꚗ-ꚗꚙ-ꚙꚛ-ꚝꜣ-ꜣꜥ-ꜥꜧ-ꜧꜩ-ꜩꜫ-ꜫꜭ-ꜭꜯ-ꜱꜳ-ꜳꜵ-ꜵꜷ-ꜷꜹ-ꜹꜻ-ꜻꜽ-ꜽꜿ-ꜿꝁ-ꝁꝃ-ꝃꝅ-ꝅꝇ-ꝇꝉ-ꝉꝋ-ꝋꝍ-ꝍꝏ-ꝏꝑ-ꝑꝓ-ꝓꝕ-ꝕꝗ-ꝗꝙ-ꝙꝛ-ꝛꝝ-ꝝꝟ-ꝟꝡ-ꝡꝣ-ꝣꝥ-ꝥꝧ-ꝧꝩ-ꝩꝫ-ꝫꝭ-ꝭꝯ-ꝸꝺ-ꝺꝼ-ꝼꝿ-ꝿꞁ-ꞁꞃ-ꞃꞅ-ꞅꞇ-ꞇꞌ-ꞌꞎ-ꞎꞑ-ꞑꞓ-ꞕꞗ-ꞗꞙ-ꞙꞛ-ꞛꞝ-ꞝꞟ-ꞟꞡ-ꞡꞣ-ꞣꞥ-ꞥꞧ-ꞧꞩ-ꞩꞯ-ꞯꞵ-ꞵꞷ-ꞷꞹ-ꞹꞻ-ꞻꞽ-ꞽꞿ-ꞿꟃ-ꟃꟈ-ꟈꟊ-ꟊꟶ-ꟶꟸ-ꟺꬰ-ꭚꭜ-ꭨꭰ-ꮿff-stﬓ-ﬗa-z𐐨-𐑏𐓘-𐓻𐳀-𐳲𑣀-𑣟𖹠-𖹿𝐚-𝐳𝑎-𝑔𝑖-𝑧𝒂-𝒛𝒶-𝒹𝒻-𝒻𝒽-𝓃𝓅-𝓏𝓪-𝔃𝔞-𝔷𝕒-𝕫𝖆-𝖟𝖺-𝗓𝗮-𝘇𝘢-𝘻𝙖-𝙯𝚊-𝚥𝛂-𝛚𝛜-𝛡𝛼-𝜔𝜖-𝜛𝜶-𝝎𝝐-𝝕𝝰-𝞈𝞊-𝞏𝞪-𝟂𝟄-𝟉𝟋-𝟋𞤢-𞥃]

此外,這個正則表達式的 1,931 個字符長的大寫版本在這里:

[A-ZÀ-ÖØ-ÞĀ-ĀĂ-ĂĄ-ĄĆ-ĆĈ-ĈĊ-ĊČ-ČĎ-ĎĐ-ĐĒ-ĒĔ-ĔĖ-ĖĘ-ĘĚ-ĚĜ-ĜĞ-ĞĠ-ĠĢ-ĢĤ-ĤĦ-ĦĨ-ĨĪ-ĪĬ-ĬĮ-Įİ-İIJ-IJĴ-ĴĶ-ĶĹ-ĹĻ-ĻĽ-ĽĿ-ĿŁ-ŁŃ-ŃŅ-ŅŇ-ŇŊ-ŊŌ-ŌŎ-ŎŐ-ŐŒ-ŒŔ-ŔŖ-ŖŘ-ŘŚ-ŚŜ-ŜŞ-ŞŠ-ŠŢ-ŢŤ-ŤŦ-ŦŨ-ŨŪ-ŪŬ-ŬŮ-ŮŰ-ŰŲ-ŲŴ-ŴŶ-ŶŸ-ŹŻ-ŻŽ-ŽƁ-ƂƄ-ƄƆ-ƇƉ-ƋƎ-ƑƓ-ƔƖ-ƘƜ-ƝƟ-ƠƢ-ƢƤ-ƤƦ-ƧƩ-ƩƬ-ƬƮ-ƯƱ-ƳƵ-ƵƷ-ƸƼ-ƼDŽ-DŽLJ-LJNJ-NJǍ-ǍǏ-ǏǑ-ǑǓ-ǓǕ-ǕǗ-ǗǙ-ǙǛ-ǛǞ-ǞǠ-ǠǢ-ǢǤ-ǤǦ-ǦǨ-ǨǪ-ǪǬ-ǬǮ-ǮDZ-DZǴ-ǴǶ-ǸǺ-ǺǼ-ǼǾ-ǾȀ-ȀȂ-ȂȄ-ȄȆ-ȆȈ-ȈȊ-ȊȌ-ȌȎ-ȎȐ-ȐȒ-ȒȔ-ȔȖ-ȖȘ-ȘȚ-ȚȜ-ȜȞ-ȞȠ-ȠȢ-ȢȤ-ȤȦ-ȦȨ-ȨȪ-ȪȬ-ȬȮ-ȮȰ-ȰȲ-ȲȺ-ȻȽ-ȾɁ-ɁɃ-ɆɈ-ɈɊ-ɊɌ-ɌɎ-ɎͰ-ͰͲ-ͲͶ-ͶͿ-ͿΆ-ΆΈ-ΊΌ-ΌΎ-ΏΑ-ΡΣ-ΫϏ-Ϗϒ-ϔϘ-ϘϚ-ϚϜ-ϜϞ-ϞϠ-ϠϢ-ϢϤ-ϤϦ-ϦϨ-ϨϪ-ϪϬ-ϬϮ-Ϯϴ-ϴϷ-ϷϹ-ϺϽ-ЯѠ-ѠѢ-ѢѤ-ѤѦ-ѦѨ-ѨѪ-ѪѬ-ѬѮ-ѮѰ-ѰѲ-ѲѴ-ѴѶ-ѶѸ-ѸѺ-ѺѼ-ѼѾ-ѾҀ-ҀҊ-ҊҌ-ҌҎ-ҎҐ-ҐҒ-ҒҔ-ҔҖ-ҖҘ-ҘҚ-ҚҜ-ҜҞ-ҞҠ-ҠҢ-ҢҤ-ҤҦ-ҦҨ-ҨҪ-ҪҬ-ҬҮ-ҮҰ-ҰҲ-ҲҴ-ҴҶ-ҶҸ-ҸҺ-ҺҼ-ҼҾ-ҾӀ-ӁӃ-ӃӅ-ӅӇ-ӇӉ-ӉӋ-ӋӍ-ӍӐ-ӐӒ-ӒӔ-ӔӖ-ӖӘ-ӘӚ-ӚӜ-ӜӞ-ӞӠ-ӠӢ-ӢӤ-ӤӦ-ӦӨ-ӨӪ-ӪӬ-ӬӮ-ӮӰ-ӰӲ-ӲӴ-ӴӶ-ӶӸ-ӸӺ-ӺӼ-ӼӾ-ӾԀ-ԀԂ-ԂԄ-ԄԆ-ԆԈ-ԈԊ-ԊԌ-ԌԎ-ԎԐ-ԐԒ-ԒԔ-ԔԖ-ԖԘ-ԘԚ-ԚԜ-ԜԞ-ԞԠ-ԠԢ-ԢԤ-ԤԦ-ԦԨ-ԨԪ-ԪԬ-ԬԮ-ԮԱ-ՖႠ-ჅჇ-ჇჍ-ჍᎠ-ᏵᲐ-ᲺᲽ-ᲿḀ-ḀḂ-ḂḄ-ḄḆ-ḆḈ-ḈḊ-ḊḌ-ḌḎ-ḎḐ-ḐḒ-ḒḔ-ḔḖ-ḖḘ-ḘḚ-ḚḜ-ḜḞ-ḞḠ-ḠḢ-ḢḤ-ḤḦ-ḦḨ-ḨḪ-ḪḬ-ḬḮ-ḮḰ-ḰḲ-ḲḴ-ḴḶ-ḶḸ-ḸḺ-ḺḼ-ḼḾ-ḾṀ-ṀṂ-ṂṄ-ṄṆ-ṆṈ-ṈṊ-ṊṌ-ṌṎ-ṎṐ-ṐṒ-ṒṔ-ṔṖ-ṖṘ-ṘṚ-ṚṜ-ṜṞ-ṞṠ-ṠṢ-ṢṤ-ṤṦ-ṦṨ-ṨṪ-ṪṬ-ṬṮ-ṮṰ-ṰṲ-ṲṴ-ṴṶ-ṶṸ-ṸṺ-ṺṼ-ṼṾ-ṾẀ-ẀẂ-ẂẄ-ẄẆ-ẆẈ-ẈẊ-ẊẌ-ẌẎ-ẎẐ-ẐẒ-ẒẔ-Ẕẞ-ẞẠ-ẠẢ-ẢẤ-ẤẦ-ẦẨ-ẨẪ-ẪẬ-ẬẮ-ẮẰ-ẰẲ-ẲẴ-ẴẶ-ẶẸ-ẸẺ-ẺẼ-ẼẾ-ẾỀ-ỀỂ-ỂỄ-ỄỆ-ỆỈ-ỈỊ-ỊỌ-ỌỎ-ỎỐ-ỐỒ-ỒỔ-ỔỖ-ỖỘ-ỘỚ-ỚỜ-ỜỞ-ỞỠ-ỠỢ-ỢỤ-ỤỦ-ỦỨ-ỨỪ-ỪỬ-ỬỮ-ỮỰ-ỰỲ-ỲỴ-ỴỶ-ỶỸ-ỸỺ-ỺỼ-ỼỾ-ỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙ-ὙὛ-ὛὝ-ὝὟ-ὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂ-ℂℇ-ℇℋ-ℍℐ-ℒℕ-ℕℙ-ℝℤ-ℤΩ-Ωℨ-ℨK-ℭℰ-ℳℾ-ℿⅅ-ⅅⅠ-ⅯↃ-ↃⒶ-ⓏⰀ-ⰮⱠ-ⱠⱢ-ⱤⱧ-ⱧⱩ-ⱩⱫ-ⱫⱭ-ⱰⱲ-ⱲⱵ-ⱵⱾ-ⲀⲂ-ⲂⲄ-ⲄⲆ-ⲆⲈ-ⲈⲊ-ⲊⲌ-ⲌⲎ-ⲎⲐ-ⲐⲒ-ⲒⲔ-ⲔⲖ-ⲖⲘ-ⲘⲚ-ⲚⲜ-ⲜⲞ-ⲞⲠ-ⲠⲢ-ⲢⲤ-ⲤⲦ-ⲦⲨ-ⲨⲪ-ⲪⲬ-ⲬⲮ-ⲮⲰ-ⲰⲲ-ⲲⲴ-ⲴⲶ-ⲶⲸ-ⲸⲺ-ⲺⲼ-ⲼⲾ-ⲾⳀ-ⳀⳂ-ⳂⳄ-ⳄⳆ-ⳆⳈ-ⳈⳊ-ⳊⳌ-ⳌⳎ-ⳎⳐ-ⳐⳒ-ⳒⳔ-ⳔⳖ-ⳖⳘ-ⳘⳚ-ⳚⳜ-ⳜⳞ-ⳞⳠ-ⳠⳢ-ⳢⳫ-ⳫⳭ-ⳭⳲ-ⳲꙀ-ꙀꙂ-ꙂꙄ-ꙄꙆ-ꙆꙈ-ꙈꙊ-ꙊꙌ-ꙌꙎ-ꙎꙐ-ꙐꙒ-ꙒꙔ-ꙔꙖ-ꙖꙘ-ꙘꙚ-ꙚꙜ-ꙜꙞ-ꙞꙠ-ꙠꙢ-ꙢꙤ-ꙤꙦ-ꙦꙨ-ꙨꙪ-ꙪꙬ-ꙬꚀ-ꚀꚂ-ꚂꚄ-ꚄꚆ-ꚆꚈ-ꚈꚊ-ꚊꚌ-ꚌꚎ-ꚎꚐ-ꚐꚒ-ꚒꚔ-ꚔꚖ-ꚖꚘ-ꚘꚚ-ꚚꜢ-ꜢꜤ-ꜤꜦ-ꜦꜨ-ꜨꜪ-ꜪꜬ-ꜬꜮ-ꜮꜲ-ꜲꜴ-ꜴꜶ-ꜶꜸ-ꜸꜺ-ꜺꜼ-ꜼꜾ-ꜾꝀ-ꝀꝂ-ꝂꝄ-ꝄꝆ-ꝆꝈ-ꝈꝊ-ꝊꝌ-ꝌꝎ-ꝎꝐ-ꝐꝒ-ꝒꝔ-ꝔꝖ-ꝖꝘ-ꝘꝚ-ꝚꝜ-ꝜꝞ-ꝞꝠ-ꝠꝢ-ꝢꝤ-ꝤꝦ-ꝦꝨ-ꝨꝪ-ꝪꝬ-ꝬꝮ-ꝮꝹ-ꝹꝻ-ꝻꝽ-ꝾꞀ-ꞀꞂ-ꞂꞄ-ꞄꞆ-ꞆꞋ-ꞋꞍ-ꞍꞐ-ꞐꞒ-ꞒꞖ-ꞖꞘ-ꞘꞚ-ꞚꞜ-ꞜꞞ-ꞞꞠ-ꞠꞢ-ꞢꞤ-ꞤꞦ-ꞦꞨ-ꞨꞪ-ꞮꞰ-ꞴꞶ-ꞶꞸ-ꞸꞺ-ꞺꞼ-ꞼꞾ-ꞾꟂ-ꟂꟄ-ꟇꟉ-ꟉꟵ-ꟵA-Z𐐀-𐐧𐒰-𐓓𐲀-𐲲𑢠-𑢿𖹀-𖹟𝐀-𝐙𝐴-𝑍𝑨-𝒁𝒜-𝒜𝒞-𝒟𝒢-𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒵𝓐-𝓩𝔄-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔸-𝔹𝔻-𝔾𝕀-𝕄𝕆-𝕆𝕊-𝕐𝕬-𝖅𝖠-𝖹𝗔-𝗭𝘈-𝘡𝘼-𝙕𝙰-𝚉𝚨-𝛀𝛢-𝛺𝜜-𝜴𝝖-𝝮𝞐-𝞨𝟊-𝟊𞤀-𞤡🄰-🅉🅐-🅩🅰-🆉]

您可以列出字符集中所有要忽略的字符

>>> re.compile("[^\W\d_K]").findall('u∏ñKθ')
['u', 'ñ', 'θ']
>>> 

所以這里我在集合中加了K ,所以會被忽略。 只需在表達式[^\\W\\d_K]的下划線后添加要忽略的所有字符。

或者,您可以使用列表理解,它適用於所有大寫字符。

list(filter(None, [i if i.islower() else None for i in re.compile("[^\W\d_]").findall('u∏ñKθ')]))

試試這個 -

import re

a = re.findall('[^\W\d_]', 'u∏ñKθ')

for i in a:
    if i.islower():
        print(i)

re.findall找到所有的 UTF-8 字符,然后用.islower()過濾掉,檢查它們是否是小寫字符,然后打印出來

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM