我正在将一个源文件中的一些文本(包括\n
和\t
个字符)写到(文本)文件中;例如:
源文件(test.cpp):
/*
* test.cpp
*
* 2013.02.30
*
*/
取自源文件并存储在字符串变量中,如此
test_str = "/*\n test.cpp\n *\n *\n *\n\t2013.02.30\n *\n */\n"
当我使用
写入文件时 with open(test.cpp, 'a') as out:
print(test_str, file=out)
正在使用换行符和制表符转换为新行和制表符空格(与test.cpp
完全相同)而我希望它们保留{{1}和\n
完全一样,\t
变量首先保存它们。
有没有办法在Python中写入这些“特殊字符”而不翻译它们时在Python中实现这一点?
答案 0 :(得分:2)
使用replace()
。由于您需要多次使用它,您可能需要查看this。
test_str = "/*\n test.cpp\n *\n *\n *\n\t2013.02.30\n *\n */\n"
with open("somefile", "w") as f:
test_str = test_str.replace('\n','\\n')
test_str = test_str.replace('\t','\\t')
f.write(test_str)
答案 1 :(得分:2)
您可以使用<?php
class SphereCalculator {
const PI = 3.14;
const FOUR_THIRDS =4/3;
public function __construct($radius){
$this->classRadius = $radius;
}
public function setRadius ($radius){
$this->classRadius = $radius;
}
public function getRadius(){
return $this->classRadius;
}
public function getVolume () {
return FOUR_THIRDS * PI * ($this->classRadius * $this->classRadius);
}
public function getArea () {
return PI * ($this->classRadius * $this->classRadius);
}
public function getDiameter () {
return $this->classRadius += $this->classRadius;
}
}
$mySphere = new SphereCalculator ();
$newRadius =$mySphere->radius;
$newRadius = 113;
echo "The volume of the circle is ".$mySphere->getVolume ()."<br>";
echo "The diameter of the circle is ".$mySphere->getDiameter ()."<br>";
echo "The area of the circle is ".$mySphere->getArea ()."<br>";
?>
:
str.encode
这将逃脱所有Python识别的特殊转义字符。
鉴于你的例子:
with open('test.cpp', 'a') as out:
print(test_str.encode('unicode_escape').decode('utf-8'), file=out)
答案 2 :(得分:1)
我希望它们保持\ n和\ t \ t,就像
test_str
变量首先保存它们一样。
test_str
不包含反斜杠\
+ t
(两个字符)。它包含单个字符ord('\t') == 9
(与test.cpp
中的字符相同)。反斜杠在Python字符串文字中是特殊的,例如,u'\U0001f600'
不是十个字符 - 它是单个字符在运行时期间不要将字符串对象混淆在内存中,而将其文本表示形式混淆为Python源代码中的字符串文字。
JSON可以比unicode-escape
编码更好地替代存储文本(更便携),即使用:
import json
with open('test.json', 'w') as file:
json.dump({'test.cpp': test_str}, file)
而不是test_str.encode('unicode_escape').decode('ascii')
。
要读回json:
with open('test.json') as file:
test_str = json.load(file)['test.cpp']