首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从字符串中删除所有中文字符?

如何从字符串中删除所有中文字符?
EN

Stack Overflow用户
提问于 2017-11-02 14:16:38
回答 4查看 5.7K关注 0票数 4

我正在尝试删除以下字符串中的所有中文字符:

代码语言:javascript
运行
复制
x <- "2.87Y 1282501 12电网MTN4 AAA 4.40 /4.30* 2000、" 

我该怎么做呢?

EN

回答 4

Stack Overflow用户

发布于 2017-11-02 14:37:40

我用谷歌搜索了一下,找到了a page about Unicode character ranges。在查看了一些CJK (中文、日文、韩文) Unicode范围后,我得出的结论是,如果所有字符串都与此特定字符串相似,则需要删除以下Unicode范围。

用于中日韩符号和标点符号的统一

  • 4E00-9FFF Ideographs
  • 3000-303F

使用gsub(),我们可以

代码语言:javascript
运行
复制
gsub("[\U4E00-\U9FFF\U3000-\U303F]", "", x)
# [1] "2.87Y 1282501 12MTN4 AAA 4.40 /4.30* 2000"

数据:

代码语言:javascript
运行
复制
x <- "2.87Y 1282501 12电网MTN4 AAA 4.40 /4.30* 2000、" 
票数 6
EN

Stack Overflow用户

发布于 2017-11-02 18:29:44

您也可以使用iconv来完成此操作。这将删除所有非ASCII字符,包括中文、日文、韩文等。

代码语言:javascript
运行
复制
iconv(x, "latin1", "ASCII", sub="")
#[1] "2.87Y 1282501 12MTN4 AAA 4.40 /4.30* 2000"
票数 3
EN

Stack Overflow用户

发布于 2019-05-24 14:29:44

汉字unicode范围为\u4E00-\u9FA5

首先使用re.findall(u'[^\u4E00-\u9FA5]', string)获取字符串中的非中文字符列表,然后扫描字符串并删除该列表中不包含的所有字符。

试试这个:

代码语言:javascript
运行
复制
import re
def strip_chinese(string):
    en_list = re.findall(u'[^\u4E00-\u9FA5]', string)
    for c in string:
        if c not in en_list:
            string = string.replace(c, '')
    return string
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47068770

复制
相关文章

相似问题

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