据我了解,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"
答案 0 :(得分:1)
Python不会转发来自您的数据文件的任何内容。反斜杠字符(和引号)实际上在文件文本中。听起来你想要在阅读它之后对它进行评估,这样就不会value
成为'"\\n"'
(一个带反斜杠的双引号和一个" n"字符的字符串) ,你得到'\n'
(一个带有一个换行符的字符串)。
我建议使用ast.literal_eval
。它与内置eval
函数类似,但不会调用函数或执行其他危险的操作,而eval
可能。除了字符串,它还将评估其他类型的Python文字(例如int
,float
和complex
数字,以及list
,tuple
,{等容器{1}}和set
(只要容器的内容也是文字)。
dict
答案 1 :(得分:0)
将map<location, ScheduledFuture<?>>
变量从delimiter
更改为"\\n"
,以便修复它。
编辑:这个问题将帮助您解决问题,查看接受的答案以获得示例。