我正在尝试从以下字符串中删除所有中文字符:
x <- "2.87Y 1282501 12电网MTN4 AAA 4.40 /4.30* 2000、"
我该怎么做?
答案 0 :(得分:4)
我去谷歌搜索,发现。在查看了一些CJK(中文,日文,韩文)Unicode范围后,我得出的结论是,如果所有字符串都与此特定字符串相似,则需要删除以下Unicode范围。
4E00-9FFF
代表CJK统一表意文字3000-303F
用于CJK符号和标点符号使用gsub()
,我们可以
gsub("[\U4E00-\U9FFF\U3000-\U303F]", "", x)
# [1] "2.87Y 1282501 12MTN4 AAA 4.40 /4.30* 2000"
数据:
x <- "2.87Y 1282501 12电网MTN4 AAA 4.40 /4.30* 2000、"
答案 1 :(得分:3)
您也可以使用iconv
执行此操作。这将删除所有非ASCII字符,包括您的中文,日文,韩文等。
iconv(x, "latin1", "ASCII", sub="")
#[1] "2.87Y 1282501 12MTN4 AAA 4.40 /4.30* 2000"
答案 2 :(得分:0)
汉字的 unicode 范围是\ u4E00- \ u9FA5
首先使用re.findall(u'[^\u4E00-\u9FA5]', string)
获取字符串中的非中文字符列表,然后扫描字符串并删除该列表中未包含的所有字符。
尝试一下:
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
答案 3 :(得分:0)
可以使用unicode块和 stringr 包来完成此操作。 This answer给出了unicode块,有不止一个。
> str_replace_all("先秦兩漢", "[\u2E80-\u2FD5\u3190-\u319f\u3400-\u4DBF\u4E00-\u9FCC\uF900-\uFAAD]", "")
[1] ""