在pandas或sql中保留包含非英语单词的行

cs7cruho  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(315)

在sql上,我的Dataframe看起来像这样(我可以直接在那里编写查询,也可以在pandas中导入查询,然后执行):

videoId    videoName

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

所以我渴望的Dataframe是这样的:

videoId    videoName

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

我想保留“印地语”和“孟加拉语”的字行。有没有我可以做的,直接从sql或通过导入Pandas,反正会工作。
然后我想区分“印地语”和“孟加拉语”。两种不同的Dataframe,如: df_hindi :

videoId     videoName

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

videoId videoName

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

正如我所说的,任何方法都可以,但是pandas和python更可取。
8ljdwjyq

8ljdwjyq1#

WHERE videoName REGEXP '^(..)*E0A[45]' 将在其中找到天成文书(印地语)中的名字。 WHERE videoName REGEXP '^(..)*E0A[67]' 孟加拉语 WHERE videoName REGEXP '^(..)*E0A[AB]' 古吉拉特人 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  ࿀࿁࿂࿃࿄࿅࿆࿇࿈࿉࿊࿋࿌࿎࿏࿐࿑࿒࿓࿔࿕࿖࿗࿘
gab6jxml

gab6jxml2#

查找字体范围,印地语(梵文)似乎是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通过正则表达式过滤出Dataframe,得到所需的输出:

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

不过,请注意,这只适用于假设,即 videoName 只包含印地语或天成文书。如果你的数据不能坚持这个假设,那么你必须用另一种方法来解决你的问题。

相关问题