写入文件时评估转义字符

时间:2015-06-18 00:50:17

标签: python

据我了解,Python会在从文件中读取值时转义转义字符。例如,换行符\n将变为\\n

但是,当我写入输出文件时,我想要换行而不是打印\n

代码示例:

output_file = open(os.path.join(path, file), 'a')

value1 = "abcd"
value2 = "1234"
delimiter = "\\n"                                 # in reality not hardcoded

output_file.write(value1 + delimiter + value2)
output_file.close()

我希望这个显示为:

abcd
1234

虽然它目前显示为:

abcd\n1234

虽然可以执行replace(),但我想避免这种情况,因为分隔符可能是任何转义值。 (即我不想要以下内容):

.replace('\\n', '\n').replace('\\t', '\t')...

编辑:

文件读取示例如下:

try:
    with open(input_data, 'r') as input:
        for line in input:
        ...
        key,value = line.split('=', 1)
        ...
        if (key.strip() == 'delimiter'):       # in reality done through loop
            index_dict['delimiter'] = value

,文件包含:

delimiter="\n"

2 个答案:

答案 0 :(得分:1)

Python不会转发来自您的数据文件的任何内容。反斜杠字符(和引号)实际上在文件文本中。听起来你想要在阅读它之后对它进行评估,这样就不会value成为'"\\n"'(一个带反斜杠的双引号和一个" n"字符的字符串) ,你得到'\n'(一个带有一个换行符的字符串)。

我建议使用ast.literal_eval。它与内置eval函数类似,但不会调用函数或执行其他危险的操作,而eval可能。除了字符串,它还将评估其他类型的Python文字(例如intfloatcomplex数字,以及listtuple,{等容器{1}}和set(只要容器的内容也是文字)。

dict

答案 1 :(得分:0)

map<location, ScheduledFuture<?>>变量从delimiter更改为"\\n",以便修复它。

编辑:这个问题将帮助您解决问题,查看接受的答案以获得示例。

Process escape sequences in a string in Python