Python 编码/解码C字符串文字

Python 编码/解码C字符串文字,python,replace,escaping,cstring,Python,Replace,Escaping,Cstring,我有一个文本文件,其中包含一些行为类似于C字符串的内容。例如: something=“一些文本\n两行\tand tab”; somethingElse=“一些带有\“引号\”的文本”; 在引号之间提取内容不是问题。问题是,稍后我处理这个字符串,斜杠转义使这变得很困难 我想解码这些字符串,处理它们,然后将它们编码回C字符串文本 所以从原始输入 some text\\with line wrap\nand \"quote\" 我需要: some text\with line wrap and

我有一个文本文件,其中包含一些行为类似于C字符串的内容。例如:

something=“一些文本\n两行\tand tab”;
somethingElse=“一些带有\“引号\”的文本”;
在引号之间提取内容不是问题。问题是,稍后我处理这个字符串,斜杠转义使这变得很困难

我想解码这些字符串,处理它们,然后将它们编码回C字符串文本

所以从原始输入

some text\\with line wrap\nand \"quote\"
我需要:

some text\with line wrap
and "quote"
反之亦然

我所尝试的


我发现,对于处理(
string\u escape
),它非常接近我所需要的,但是因为我正在处理C字符串,所以它是无用的。我已经试着找到其他的编解码器来解决我的问题,但到目前为止运气不佳。

我也在寻找一个简单的解决方案,而
json
模块似乎是最简单的解决方案。以下是我的快速破解。请注意,如果/当单引号(')和双引号(“)出现在同一个字符串中时仍然存在问题…我怀疑您将遇到unicode字符问题

def c_decode(in_str:str) -> str:
    return json.loads(in_str.join('""' if '"' not in in_str else "''"))

def c_encode(in_str:str) -> str:
    """ Encode a string literal as per C"""
    return json.dumps(in_str)[1:-1]
还请注意,如果_str中的
“AB\n\r\tYZ”

then we alternatively have: ("%r"%(in_str.join('""')))[2:-2]
giving: 'AB\\n\\r\\tYZ' # almost the same c_encode above. 

希望有人能找到更好的解决方案。

您处理的是转义序列,而不是文本编码。请参阅
json。dumps
将Unicode字符编码为
\u
,这对我不起作用:/。好的,像
json这样的疯子。dumps(s,确保\u ascii=False)[1:][:-1]
做得很好,谢谢。