ตรวจสอบยูนิโค้ดด้วยอักขระพิเศษ

ฉันมีสตริงยูนิโค้ดเช่น

u'0d7a6b6b37682bab6d8eda97cda4bad7'

และ

u'Brauers, A.'

ผมอยากจะแยกแยะระหว่างสองสิ่งนี้ ฉันลองใช้ regex กับ \p{Alphabet} แต่ใช้ไม่ได้กับตัวอย่างที่สอง เนื่องจากตัวอย่างที่สองประกอบด้วย , และ . ใครสามารถช่วยฉันในเรื่องนี้?


person Sadiksha Gautam    schedule 09.07.2012    source แหล่งที่มา
comment
หมุนมันไปรอบๆ; เช็คตัวเลขแทนไหม?   -  person Martijn Pieters    schedule 09.07.2012
comment
คุณจะต้องให้คำอธิบายที่สมบูรณ์ยิ่งขึ้นว่าอะไรคือลักษณะของสตริงทั้งสอง ตัวแรกจะมีอักขระ 36 ตัวเสมอหรือไม่ เลขฐานสิบหกทั้งหมดเสมอเหรอ?   -  person Ned Batchelder    schedule 09.07.2012


คำตอบ (2)


สิ่งที่ง่ายที่สุดคือการตรวจสอบตัวเลขที่ไม่ใช่เลขฐานสิบหก:

if re.match(r'[^0-9a-f]', my_string):
    # This is a u'Brauers, A.' kind of string
else:
    # This is a u'0d7a6b6b37682bab6d8eda97cda4bad7' kind of string
person Ned Batchelder    schedule 09.07.2012

เพียงตรวจสอบเลขฐานสิบหก?

>>> re.match(r'^[0-9a-f]*$', u'0d7a6b6b37682bab6d8eda97cda4bad7') != None
True
>>> re.match(r'^[0-9a-f]*$', u'Brauers, A.') != None
False
person Maria Zverina    schedule 09.07.2012