amr*_*rrs 5 regex r text-mining
我有一堆像下面这样的文本,带有不同的智能引号 - 用于单引号和双引号。我所知道的软件包最终所能得到的就是删除这些字符,但我希望将它们替换为正常的引号。
\n\ntextclean::replace_non_ascii("You don\xe2\x80\x98t get \xe2\x80\x9cyour\xe2\x80\x9d money\xe2\x80\x99s worth")\nRun Code Online (Sandbox Code Playgroud)\n\n收到的输出:"You dont get your moneys worth"
预期输出:"You don\'t get "your" money\'s worth"
如果有人有正则表达式来一次替换所有这样的引号,我也将不胜感激。
\n\n谢谢!
\n使用两个gsub操作:1)替换双大引号,2)替换单引号:
> gsub("[\xe2\x80\x9c\xe2\x80\x9d]", "\\"", gsub("[\xe2\x80\x98\xe2\x80\x99]", "\'", text))\n[1] "You don\'t get \\"your\\" money\'s worth"\nRun Code Online (Sandbox Code Playgroud)\n\n请参阅在线 R 演示。在 Linux 和 Windows 上都进行了测试,并且工作原理相同。
\n\n该[\xe2\x80\x9c\xe2\x80\x9d]构造是一个正字符类,与类中定义的任何单个字符相匹配。
要规范化所有类似于双引号的字符,您可能需要使用
\n\n> sngl_quot_rx = "[\xca\xbb\xca\xbc\xca\xbd\xd9\xac\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9a\xe2\x80\x9b\xd5\x9a\xef\xb8\x90]"\n> dbl_quot_rx = "[\xc2\xab\xc2\xbb\xe2\x80\x9c\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9e\xe2\x80\x9f\xe2\x89\xaa\xe2\x89\xab\xe3\x80\x8a\xe3\x80\x8b\xe3\x80\x9d\xe3\x80\x9e\xe3\x80\x9f\\\xef\xbc\x82\xe2\x80\xb3\xe2\x80\xb6]"\n> res = gsub(dbl_quot_rx, "\\"", gsub(sngl_quot_rx, "\'", `Encoding<-`(text, "UTF8"))) \n> cat(res, sep="\\n")\nYou don\'t get "your" money\'s worth\nRun Code Online (Sandbox Code Playgroud)\n\n在这里,[\xc2\xab\xc2\xbb\xe2\x80\x9c\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9e\xe2\x80\x9f\xe2\x89\xaa\xe2\x89\xab\xe3\x80\x8a\xe3\x80\x8b\xe3\x80\x9d\xe3\x80\x9e\xe3\x80\x9f\xef\xbc\x82\xe2\x80\xb3\xe2\x80\xb6]匹配
\xc2\xab 00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\n\xc2\xbb 00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\n\xe2\x80\x9c 05F4 HEBREW PUNCTUATION GERSHAYIM\n\xe2\x80\x9c 201C LEFT DOUBLE QUOTATION MARK\n\xe2\x80\x9d 201D RIGHT DOUBLE QUOTATION MARK\n\xe2\x80\x9e 201E DOUBLE LOW-9 QUOTATION MARK\n\xe2\x80\x9f 201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK\n\xe2\x89\xaa 226A MUCH LESS-THAN\n\xe2\x89\xab 226B MUCH GREATER-THAN\n\xe3\x80\x8a 300A LEFT DOUBLE ANGLE BRACKET\n\xe3\x80\x8b 300B RIGHT DOUBLE ANGLE BRACKET\n\xe3\x80\x9d 301D REVERSED DOUBLE PRIME QUOTATION MARK\n\xe3\x80\x9e 301E DOUBLE PRIME QUOTATION MARK\n\xe3\x80\x9f 301F LOW DOUBLE PRIME QUOTATION MARK\n\xef\xbc\x82 FF02 FULLWIDTH QUOTATION MARK\n\xe2\x80\xb3 2033 DOUBLE PRIME\n\xe2\x80\xb6 2036 REVERSED DOUBLE PRIME\nRun Code Online (Sandbox Code Playgroud)\n\n用于[\xca\xbb\xca\xbc\xca\xbd\xd9\xac\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9a\xe2\x80\x9b\xd5\x9a\xef\xb8\x90]规范化一些类似于单引号的字符:
\xca\xbb 02BB MODIFIER LETTER TURNED COMMA\n\xca\xbc 02BC MODIFIER LETTER APOSTROPHE\n\xca\xbd 02BD MODIFIER LETTER REVERSED COMMA\n\xd9\xac 066C ARABIC THOUSANDS SEPARATOR\n\xe2\x80\x98 2018 LEFT SINGLE QUOTATION MARK\n\xe2\x80\x99 2019 RIGHT SINGLE QUOTATION MARK\n\xe2\x80\x9a 201A SINGLE LOW-9 QUOTATION MARK\n\xe2\x80\x9b 201B SINGLE HIGH-REVERSED-9 QUOTATION MARK\n\xd5\x9a 055A ARMENIAN APOSTROPHE\n\xef\xb8\x90 FE10 PRESENTATION FORM FOR VERTICAL COMMA\nRun Code Online (Sandbox Code Playgroud)\n