在Pandas或SQL中用非英语单词保留行

时间:2018-10-24 10:57:41

标签: python mysql regex pandas

我的数据框在SQL上看起来像这样(我可以直接在那写查询,也可以将其导入Pandas,然后执行):

videoId    videoName

12234      Racing through the valleys
14533      Character Loose
14456      सूरमा धड़क 
17889      हिचकी
16612      মন তোমাকে ছুঁয়ে দিলাম
15580      ঈশানকোণে বিষন্নতায়

因此,我向往的数据框将是这样的:

videoId    videoName

 14456      सूरमा धड़क 
 17889      हिचकी
 16612      মন তোমাকে ছুঁয়ে দিলাম
 15580      ঈশানকোণে বিষন্নতায়

我想保留带有“印地语”和“孟加拉语”字样的行。无论如何,我可以直接从SQL或通过导入Pandas来做到这一点。

然后我要区分“印地语”和“孟加拉语”。两种不同的数据框,例如:

df_hindi

    videoId     videoName

     14456      सूरमा धड़क 
     17889      हिचकी

df_bengali

videoId    videoName

16612      মন তোমাকে ছুঁয়ে দিলাম
15580      ঈশানকোণে বিষন্নতায়

正如我所说,任何方法都可以,但是Pandas和Python更可取。

2 个答案:

答案 0 :(得分:0)

查找font ranges时,印地语(devanagari)似乎是 U + 0900–U + 097F ,而孟加拉语是 U + 0980–U + 09FF

chars_hindi = [chr(c) for c in range(0x0900, 0x097f)]
chars_bengali = [chr(c) for c in range(0x0980, 0x09ff)]

使用alternation通过正则表达式过滤出数据帧,即可得到所需的输出:

df_hindi = df[df.videoName.str.contains('|'.join(chars_hindi))]
df_bengali = df[df.videoName.str.contains('|'.join(chars_bengali))]

请注意,这仅在假设以下条件下有效:每个videoName都仅包含 印地语梵文。如果您的数据不能满足该假设,则必须以另一种方式解决问题。

答案 1 :(得分:0)

WHERE videoName REGEXP '^(..)*E0A[45]'将在其中以梵文(印地文)文本查找名称。
WHERE videoName REGEXP '^(..)*E0A[67]'代表孟加拉语
WHERE videoName REGEXP '^(..)*E0A[AB]' for古吉拉特语
WHERE videoName NOT REGEXP '^(..)*E0'将(大约)避免使用任何印度语言。

可以从以下推论中选择其他语言:

| DEVANAGARI LETTER                | E0A485 | E0A4B9 |
| DEVANAGARI SIGN                  | E0A4BD | E0A4BD |
| DEVANAGARI OM                    | E0A590 | E0A590 |
| DEVANAGARI LETTER                | E0A598 | E0A5A1 |
| DEVANAGARI DIGIT                 | E0A5A6 | E0A5AF |
| BENGALI LETTER                   | E0A685 | E0A6B9 |
| BENGALI LETTER                   | E0A79C | E0A7A1 |
| BENGALI DIGIT                    | E0A7A6 | E0A7AF |
| BENGALI LETTER                   | E0A7B0 | E0A7B1 |
| GURMUKHI LETTER                  | E0A885 | E0A8B9 |
| GURMUKHI LETTER                  | E0A999 | E0A99E |
| GURMUKHI DIGIT                   | E0A9A6 | E0A9AF |
| GURMUKHI IRI                     | E0A9B2 | E0A9B4 |
| GUJARATI LETTER                  | E0AA85 | E0AAB9 |
| GUJARATI SIGN                    | E0AABD | E0AABD |
| GUJARATI OM                      | E0AB90 | E0ABA0 |
| GUJARATI DIGIT                   | E0ABA6 | E0ABAF |
| ORIYA LETTER                     | E0AC85 | E0ACB9 |
| ORIYA SIGN                       | E0ACBD | E0ACBD |
| ORIYA LETTER                     | E0AD9C | E0ADA1 |
| ORIYA DIGIT                      | E0ADA6 | E0ADAF |
| TAMIL SIGN                       | E0AE83 | E0AEB9 |
| TAMIL DIGIT                      | E0AFA7 | E0AFAF |
| TELUGU LETTER                    | E0B085 | E0B0B9 |
| TELUGU LETTER                    | E0B1A0 | E0B1A1 |
| TELUGU DIGIT                     | E0B1A6 | E0B1AF |
| KANNADA LETTER                   | E0B285 | E0B2B9 |
| KANNADA LETTER                   | E0B39E | E0B3A1 |
| KANNADA DIGIT                    | E0B3A6 | E0B3AF |
| MALAYALAM LETTER                 | E0B485 | E0B4B9 |
| MALAYALAM LETTER                 | E0B5A0 | E0B5A1 |
| MALAYALAM DIGIT                  | E0B5A6 | E0B5AF |
| SINHALA LETTER                   | E0B685 | E0B786 |
| THAI CHARACTER                   | E0B881 | E0B8B0 |
| THAI CHARACTER                   | E0B8B2 | E0B8B3 |
| THAI CHARACTER                   | E0B980 | E0B986 |
| THAI DIGIT                       | E0B990 | E0B999 |
| LAO LETTER                       | E0BA81 | E0BAB0 |
| LAO VOWEL                        | E0BAB2 | E0BAB3 |
| LAO SEMIVOWEL                    | E0BABD | E0BB86 |
| LAO DIGIT                        | E0BB90 | E0BB99 |
| LAO HO                           | E0BB9C | E0BC80 |
| TIBETAN DIGIT                    | E0BCA0 | E0BCA9 |
| TIBETAN LETTER                   | E0BD80 | E0BDAA |
| TIBETAN SIGN                     | E0BE88 | E0BE8B |

E0A4xx  DEVANAGARI  ऀँंःऄअआइईउऊऋऌऍऎएऐऑऒओऔकखगघङचछजझञटठडढणतथदधनऩपफबभमयरऱलळऴवशषसह़ऽाि
E0A5xx  ीुूृॄॅॆेैॉॊोौ्ॎॐ॒॑॓॔ॕक़ख़ग़ज़ड़ढ़फ़य़ॠॡॢॣ।॥०१२३४५६७८९॰ॱॲॹॺॻॼॽॾॿ
E0A6xx  BENGALI     ঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽাি
E0A7xx  ীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣ০১২৩৪৫৬৭৮৯ৰৱ৲৳৴৵৶৷৸৹৺৻
E0A8xx  GURMUKHI    ਁਂਃਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਲ਼ਵਸ਼ਸਹ਼ਾਿ
E0A9xx  ੀੁੂੇੈੋੌ੍ੑਖ਼ਗ਼ਜ਼ੜਫ਼੦੧੨੩੪੫੬੭੮੯ੰੱੲੳੴੵ
E0AAxx  GUJARATI    ઁંઃઅઆઇઈઉઊઋઌઍએઐઑઓઔકખગઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલળવશષસહ઼ઽાિ
E0ABxx  ીુૂૃૄૅેૈૉોૌ્ૐૠૡૢૣ૦૧૨૩૪૫૬૭૮૯૱
E0ACxx  ORIYA   ଁଂଃଅଆଇଈଉଊଋଌଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଳଵଶଷସହ଼ଽାି
E0ADxx  ୀୁୂୃୄେୈୋୌ୍ୖୗଡ଼ଢ଼ୟୠୡୢୣ୦୧୨୩୪୫୬୭୮୯୰ୱ
E0AExx  TAMIL   ஂஃஅஆஇஈஉஊஎஏஐஒஓஔகஙசஜஞடணதநனபமயரறலளழவஶஷஸஹாி
E0AFxx  ீுூெேைொோௌ்ௐௗ௦௧௨௩௪௫௬௭௮௯௰௱௲௳௴௵௶௷௸௹௺
E0B0xx  TELUGU  ఁంఃఅఆఇఈఉఊఋఌఎఏఐఒఓఔకఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళవశషసహఽాి
E0B1xx  ీుూృౄెేైొోౌ్ౕౖౘౙౠౡౢౣ౦౧౨౩౪౫౬౭౮౯౸౹౺౻౼౽౾౿
E0B2xx  KANNADA     ಂಃಅಆಇಈಉಊಋಌಎಏಐಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಱಲಳವಶಷಸಹ಼ಽಾಿ
E0B3xx  ೀುೂೃೄೆೇೈೊೋೌ್ೕೖೞೠೡೢೣ೦೧೨೩೪೫೬೭೮೯ೱೲ
E0B4xx  MALAYALAM   ംഃഅആഇഈഉഊഋഌഎഏഐഒഓഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരറലളഴവശഷസഹഽാി
E0B5xx  ീുൂൃൄെേൈൊോൌ്ൗൠൡൢൣ൦൧൨൩൪൫൬൭൮൯൰൱൲൳൴൵൹ൺൻർൽൾൿ
E0B6xx  SINHALA     ංඃඅආඇඈඉඊඋඌඍඎඏඐඑඒඓඔඕඖකඛගඝඞඟචඡජඣඤඥඦටඨඩඪණඬතථදධනඳපඵබභමඹයරල
E0B7xx  වශෂසහළෆ්ාැෑිීුූෘෙේෛොෝෞෟෲෳ෴
E0B8xx  THAI    กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿
E0B9xx  เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛
E0BAxx  LAO     ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯະັາຳິີຶືຸູົຼຽ
E0BBxx  ເແໂໃໄໆ່້໊໋໌ໍ໐໑໒໓໔໕໖໗໘໙ໜໝ
E0BCxx  TIBETAN     ༀ༁༂༃༄༅༆༇༈༉༊་༌།༎༏༐༑༒༓༔༕༖༗༘༙༚༛༜༝༞༟༠༡༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳༴༵༶༷༸༹༺༻༼༽༾༿
E0BDxx  ཀཁགགྷངཅཆཇཉཊཋཌཌྷཎཏཐདདྷནཔཕབབྷམཙཚཛཛྷཝཞཟའཡརལཤཥསཧཨཀྵཪཫཬཱཱཱིིུུྲྀཷླྀཹེཻོཽཾཿ
E0BExx  ྄ཱྀྀྂྃ྅྆྇ྈྉྊྋྐྑྒྒྷྔྕྖྗྙྚྛྜྜྷྞྟྠྡྡྷྣྤྥྦྦྷྨྩྪྫྫྷྭྮྯྰྱྲླྴྵྶྷྸྐྵྺྻྼ྾྿
E0BFxx  ࿀࿁࿂࿃࿄࿅࿆࿇࿈࿉࿊࿋࿌࿎࿏࿐࿑࿒࿓࿔࿕࿖࿗࿘