【问题标题】:Special character in parse解析中的特殊字符
【发布时间】:2021-06-17 11:41:40
【问题描述】:

我想在parse 中使用的文本中添加更大的等号。我为此使用\u2265

parse(text = 'print("\u2265")')

有了这个,即使有了encoding = "UTF-8",这会导致expression(print("=")),更大的等号就是等号。我该怎么做才能保留更大的等号?

【问题讨论】:

  • 你能证明你使用encoding="UTF-8"的尝试吗?因为它适用于此。

标签: r parsing encoding


【解决方案1】:

你必须把反斜杠加倍:

> eval(parse(text = 'print("\\u2265")'))
[1] "≥"

【讨论】:

  • 我怀疑编码和语言环境在这个讨论中是相关的:在我的控制台上(使用 emacs/ess),这会产生[1] "="。当然,我 (1) 正在运行 emacs/ess,有时会有所不同;和 (2) 运行窗口,几乎总是不同的——足够困难。
【解决方案2】:

由于 Windows 上 R 的 Unicode 处理存在错误,它需要您显式指定编码:

result = parse(text = 'print("\u2265")', encoding = 'UTF-8')

这个的结果看起来不正确——例如,在我的终端上它打印出来

expression(print("="))

...然而,这只是表达式打印的一个错误。实际值是正确的。您可以通过以下两种方式之一进行验证:

  1. 提取未计算的表达式:

    result[[1L]]
    
    print("≥")
    
  2. 评估表达式:

    eval(result)
    
    [1] "≥"
    

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 2021-07-16
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多