【问题标题】:How to convert string literals to strings?如何将字符串文字转换为字符串?
【发布时间】:2012-05-16 17:03:52
【问题描述】:

我想将r"r'\nasdf'" 之类的字符串文字转换为字符串(在本例中为'\\nasdf')。

另一种情况:r"'\nasdf'"'\nasdf'。 我希望你能明白。

这很重要,因为我有一个 python 脚本解析器,它想知道字符串文字的确切内容。

eval 是一个聪明的解决方案吗?字符串文字在之前被过滤(使用tokenize),不应导致安全责任。除了评估文字之外,没有任何 nobler 解决方案吗?也许是解析器库?

编辑:添加其他示例,以避免误解。

【问题讨论】:

  • 那将是一个“原始”字符串,而不是一个“文字”
  • 我认为我没有正确地提出我的问题,我正在尝试再次正确地做。我的意思是字符串文字,而不是原始字符串。
  • 够清楚了。而literal_eval 是更高贵的解决方案:)

标签: python string string-literals


【解决方案1】:

你想要ast module:

>>> import ast
>>> raw = r"r'\nasdf'"
>>> ast.literal_eval(raw)
'\\nasdf'
>>> raw = r"'\nasdf'"
>>> ast.literal_eval(raw)
'\nasdf'

这是一种评估/解析包含 Python 源代码的字符串的安全方法(与 eval() 不同)。

【讨论】:

    【解决方案2】:

    是的,有:

    >>> s = r'\nasdf'
    >>> s.decode('string-escape')
    '\nasdf'
    

    【讨论】:

    • 对不起,我的问题不太清楚(我编辑过)。这是原始字符串到字符串的转换,而不是字符串文字到字符串的转换。
    猜你喜欢
    • 1970-01-01
    • 2019-10-10
    • 2019-01-05
    • 2018-04-30
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多