如何使用R统计印地语、中文等非西方语言的字符/等效字母数量
非西方语言等效字母/字符统计方案
你之前的统计结果为0,是因为正则[a-z]仅能匹配拉丁字母表的小写字符,无法覆盖印地语、中文、西里尔文等非拉丁书写系统的字符,也不需要自行维护全量字符匹配列表,直接使用R的Unicode字符属性匹配即可实现需求。
通用统计逻辑
使用Unicode通用字母属性\p{L}即可匹配所有书写系统的字母/表意字符,覆盖拉丁、天城文(印地语使用)、中文、西里尔文等所有主流语言的等效字母/单字:
library(stringr) # 印地语统计 hindi_text <- "बहुत सी" str_count(hindi_text, "\\p{L}") # 输出:4 # 中文统计 chinese_text <- "这是测试文本" str_count(chinese_text, "\\p{L}") # 输出:6 # 西里尔文统计 cyrillic_text <- "Привет" str_count(cyrillic_text, "\\p{L}") # 输出:6 # 原西方拉丁文本统计也可兼容 western_text <- "This is my text" str_count(tolower(western_text), "\\p{L}") # 输出:12
特定书写系统单独统计
如果需要在混合文本中单独统计某一类语言的字符,可以指定Unicode脚本属性:
# 单独统计印地语使用的天城文字符 str_count(hindi_text, "\\p{Script=Devanagari}") # 输出:4 # 单独统计中文字符(自动忽略混合的英文、数字等内容) str_count("这是测试English混合文本123", "\\p{Script=Han}") # 输出:6 # 单独统计西里尔文字符 str_count("Привет hello", "\\p{Script=Cyrillic}") # 输出:6
特殊场景适配
如果统计的是视觉上的单个字符(比如阿拉伯语、泰语等带组合附加符号的语言,单个视觉字符可能由多个Unicode编码组成),可以使用字形簇匹配规则:
# 按视觉上的单个字符计数 str_count(text, "\\X")
内容的提问来源于stack exchange,提问作者deschen
相关产品推荐
相关产品推荐

