接受python中所有泰文字符和英文字母的正则表达式 [英] Regular Expression to accept all Thai characters and English letters in python

查看:195
本文介绍了接受python中所有泰文字符和英文字母的正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要矢量化泰语文本文档(例如词袋、doc2vec).

首先,我想查看每个文档,省略除泰文字符和英文单词以外的所有内容(例如,没有标点符号、没有数字、没有除撇号之外的其他特殊字符).

对于英文文档,我使用这个正则表达式:[^a-zA-Z' ]|^'|'$|''

对于泰语文档,我找不到要使用的正确正则表达式.我知道泰语的 Unicode 块是 u0E00–u0E7F.我尝试了 [^ก-๛a-zA-Z' ]|^'|'$|'' 和许多其他组合,但没有成功.

例如:我要

ทรูวิชั่นส์ประกาศถ่ายทอดสดศึกฟุตบอลพรีเมียร์ลีกอังกฤษครบทุกนัดเป็นเวลา3ปีตั้งแต่ฤดูกาล二千○一十七分之二千○十六 - 二千〇十九分之二千〇一十八พร้อมด้วยอีก5ลีกดังอาทิลาลีกาสเปน,กัลโชเซเรียเออิตาลีและลีกเอิงฝรั่งเศสภายใต้แพ็กเกจสุดคุ้มทั้งผ่านมือถือและโทรทัศน์一些英语单词了!ABC123"

成为:

ทรูวิชั่นส์ประกาศถ่ายทอดสดศึกฟุตบอลพรีเมียร์ลีกอังกฤษครบทุกนัดเป็นเวลาปีตั้งแต่ฤดูกาลพร้อมด้วยอีกลีกดังอาทิลาลีกาสเปน,กัลโชเซเรียเออิตาลีและลีกเอิงฝรั่งเศสภายใต้แพ็กเกจสุดคุ้ม ทั้งผ่านมือถือและโทรทัศน์"这里有一些英文单词

解决方案

我将使用一些列表来做我需要的事情.

首先,让我们创建模式:

pattern = re.compile(r"[^\u0E00-\u0E7Fa-zA-Z' ]|^'|'$|''")

我将使用名为 test_string 的字符串,其中包含您的示例:

<预> <代码> test_string =ทรูวิชั่นส์ประกาศถ่ายทอดสดศึกฟุตบอลพรีเมียร์ลีกอังกฤษครบทุกนัดเป็นเวลา3ปีตั้งแต่ฤดูกาล二千○一十七分之二千○一十六 - 二千〇一十九分之二千〇十八พร้อมด้วยอีก5ลีกดังอาทิลาลีกาสเปน,กัลโชเซเรียเออิตาลีและลีกเอิงฝรั่งเศสภายใต้แพ็กเกจสุดคุ้มทั้งผ่านมือถือและโทรทัศน์一些英语单词在这里!ABC123"

首先,让我们在列表中删除要删除的字符:

char_to_remove = re.findall(pattern, test_string)

然后,让我们创建一个由原始字符串中的字符组成的列表,不包含这些字符:

list_with_char_removed = [char for char in test_string 如果不是 char_to_remove 中的 char]

我们把这个列表转换成一个字符串,就大功告成了.

result_string = ''.join(list_with_char_removed)

结果是:

<代码>'ทรูวิชั่นส์ประกาศถ่ายทอดสดศึกฟุตบอลพรีเมียร์ลีกอังกฤษครบทุกนัดเป็นเวลาปีตั้งแต่ฤดูกาลพร้อมด้วยอีกลีกดังอาทิลาลีกาสเปนกัลโชเซเรียเออิตาลีและลีกเอิงฝรั่งเศสภายใต้在这里

如果您有任何更简洁的方法来执行任何步骤/任何问题,请不要犹豫!

I need to vectorize text documents in Thai (e.g Bag of Words, doc2vec).

First I want to go over each document, omitting everything except the Thai characters and English words (e.g. no punctuation, no numbers, no other special characters except apostrophe).

For English documents, I use this regular expression: [^a-zA-Z' ]|^'|'$|''

For Thai documents, I cannot find the right regular expression to use. I know that the Unicode block for Thai is u0E00–u0E7F. I tried [^ก-๛a-zA-Z' ]|^'|'$|'' and many other combinations but they don't succeed.

For example: I want

"ทรูวิชั่นส์ ประกาศถ่ายทอดสดศึกฟุตบอล พรีเมียร์ ลีก อังกฤษ ครบทุกนัดเป็นเวลา 3 ปี ตั้งแต่ฤดูกาล 2016/2017 - 2018/2019 พร้อมด้วยอีก 5 ลีกดัง อาทิ ลา ลีกา สเปน, กัลโช เซเรีย เอ อิตาลี และลีกเอิง ฝรั่งเศส ภายใต้แพ็กเกจสุดคุ้ม ทั้งผ่านมือถือ และโทรทัศน์ some, English words here! abc123"

to be:

"ทรูวิชั่นส์ ประกาศถ่ายทอดสดศึกฟุตบอล พรีเมียร์ ลีก อังกฤษ ครบทุกนัดเป็นเวลา ปี ตั้งแต่ฤดูกาล พร้อมด้วยอีก ลีกดัง อาทิ ลา ลีกา สเปน, กัลโช เซเรีย เอ อิตาลี และลีกเอิง ฝรั่งเศส ภายใต้แพ็กเกจสุดคุ้ม ทั้งผ่านมือถือ และโทรทัศน์ some English words here abc"

解决方案

I'll be using some lists to do what I need.

First, let's create the pattern :

pattern = re.compile(r"[^\u0E00-\u0E7Fa-zA-Z' ]|^'|'$|''")

I'll use a string named test_string, containing your example :

test_string="ทรูวิชั่นส์ ประกาศถ่ายทอดสดศึกฟุตบอล พรีเมียร์ ลีก อังกฤษ ครบทุกนัดเป็นเวลา 3 ปี ตั้งแต่ฤดูกาล 2016/2017 - 2018/2019 พร้อมด้วยอีก 5 ลีกดัง อาทิ ลา ลีกา สเปน, กัลโช เซเรีย เอ อิตาลี และลีกเอิง ฝรั่งเศส ภายใต้แพ็กเกจสุดคุ้ม ทั้งผ่านมือถือ และโทรทัศน์ some, English words here! abc123"

First, let's get the characters to remove, in a list :

char_to_remove = re.findall(pattern, test_string)

Then, let's create a list made of the character from our original string, without these characters :

list_with_char_removed = [char for char in test_string if not char in char_to_remove]

We transform this list into a string, and we're done.

result_string = ''.join(list_with_char_removed)

Result is :

'ทรูวิชั่นส์ ประกาศถ่ายทอดสดศึกฟุตบอล พรีเมียร์ ลีก อังกฤษ ครบทุกนัดเป็นเวลา ปี ตั้งแต่ฤดูกาล พร้อมด้วยอีก ลีกดัง อาทิ ลา ลีกา สเปน กัลโช เซเรีย เอ อิตาลี และลีกเอิง ฝรั่งเศส ภายใต้แพ็กเกจสุดคุ้ม ทั้งผ่านมือถือ และโทรทัศน์ some English words here abc'

If you have any cleaner way to do any of the steps/any questions, do not hesitate !

这篇关于接受python中所有泰文字符和英文字母的正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆