如何解决如何从Pandas Dataframe中分离日语文本和英语文本?
----IDs-------Texts ---------
132 | 復旧完了。よろしく頼む!
623 | This is an English text
2364 | "<@UD3JFBREV> 収集した日本語のツイートデータはどこにありますでしょうか"
... | .....
现在,我想从Texts
列中将英语文本与日语文本分开。我的新数据框应仅返回英文文本,而忽略日文文本。我该怎么办?
解决方法
好,谢谢您上述可能的解决方案。不幸的是,那些并不能解决我的问题。它对我的数据集起作用的方式是这样的:
df['Texts'] = df[~df.Texts.str.contains(r'[^\x00-\x7F]',na=False)]
这将删除所有包含任何非ASCII字符的行,并将这些行设为NaN。因此,我删除了NaN值,该值使我从数据框中获得了所有英语句子。
,日语文本为not ascii(它是Unicode),因此您可以根据IS ASCII条件过滤文本。假设您的字符串只能是日语或英语,则可以将字符串方法.isascii()
应用于“文本”列的每个元素,如下所示(在Python 3.7及更高版本中):
df[df['Texts'].apply(lambda x: x.isascii())]
在上面的示例中,这将返回:
ids text
123 This is an English text
在早期版本的Python中,您可以执行以下操作:
df[df['text'].apply(lambda x: len(x.encode('utf8')) == len(x))]
(基本上,如果将字符串编码为utf8后,其长度与字符串的总长度相同,则为ASCII,因此必须为英语。)
您可以通过将其应用于字符串来测试其工作原理:
"<@UD3JFBREV> 収集した日本語のツイートデータはどこにありますでしょうか".isascii()
False
"This is an English text".isascii()
True
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。