首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取包含中文字符的行数?

如何获取包含中文字符的行数?
EN

Stack Overflow用户
提问于 2013-03-25 00:24:39
回答 2查看 1.5K关注 0票数 0

我有一个非常大的纯文本文件与各种语言,如英语,日语,中文…我想知道包含中文字符的行数。

我认为使用grep和wc -l可以做到这一点,但是我如何才能真正做到这一点呢?

代码语言:javascript
复制
cat filename | grep -P "[\x{4e00}-\x{9fcc}]" | wc -l

此命令不起作用,并显示以下错误消息:

.grep:\x{...}序列中的字符值太大。

EN

回答 2

Stack Overflow用户

发布于 2013-03-25 06:40:33

如果您不介意使用Python,您可以在unicodedata模块的帮助下观察文件中使用了哪些字符。使用nāgarī输入和Python 3的示例:

代码语言:javascript
复制
>>> import unicodedata
>>> word = "ब्र॑ह्मन्"
>>> len(word)
9
>>> for char in word:
...     unicodedata.name(char)
... 
'DEVANAGARI LETTER BA'
'DEVANAGARI SIGN VIRAMA'
'DEVANAGARI LETTER RA'
'DEVANAGARI STRESS SIGN UDATTA'
'DEVANAGARI LETTER HA'
'DEVANAGARI SIGN VIRAMA'
'DEVANAGARI LETTER MA'
'DEVANAGARI LETTER NA'
'DEVANAGARI SIGN VIRAMA'

当然,您首先需要查找每个脚本中使用的字形的unicode名称。unicode字符表可以在here中找到。在同一网站上给出了每种语言的一些特定表格。

一旦你定义了你想要捕获的字符范围,剩下的事情就很简单了:

代码语言:javascript
复制
all_chars = ['ब', '्', 'र', '॑', 'ह', '्','म', 'न', '्']

i = 0
with open('thefile') as f:
    for line in f.readline():
        i += 1
        for char in all_chars:
            if char in line:
                print("char %s found in line %s" % (char, i))
                continue
票数 1
EN

Stack Overflow用户

发布于 2020-01-14 06:09:01

我有一个非常大的纯文本文件,有各种语言,如英语,日语,中文…我想知道包含中文字符的行数。

我认为使用grep和wc -l可以做到这一点,但是我如何才能真正做到这一点呢?

cat文件名| grep -P "\x{4e00}-\x{9fcc}“| wc -l

此命令不起作用。

Grep本身不支持Unicode字符范围。只需使用grep变体,例如完全支持Unicode和UTF-8/16/32编码输入的ugrep

代码语言:javascript
复制
cat filename | ugrep "[\x{4e00}-\x{9fcc}]" | wc -l
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15600945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档