python跳过'\n';在替换方法中
下面是json,这是我读取数据的地方-> ====================================================================================================================================python跳过'\n';在替换方法中,python,replace,newline,Python,Replace,Newline,下面是json,这是我读取数据的地方-> ==================================================================================================================================== import re; import sys; import json; loc_file=str(sys.argv[1]) ; open_json=open(loc_file); data=
import re;
import sys;
import json;
loc_file=str(sys.argv[1]) ;
open_json=open(loc_file);
data=json.load(open_json);
list1=data[0].get('statements');
json_input_string="";
json_input_string=str(list1);
json_input_string=json_input_string.replace(r"Text ' ' followed by text",r"Text '\n'"); # This replace works fine but the replace below fails for '\n'
f = open("Text.txt","w");
m=""
for c in list1:
#print "\n\n"+c
m=str(c).replace(r"Text ' '",r"Text '\n'"); # Here it fails (does not preserve 'n')
f.write(m+";\n")
有两种可能的事情,任何一种都可以做到
可能的解决方案1):
如果replace方法在循环内有效
我想在两点换一个
例如,使用原始字符串表示法的replace函数适用于
上述变量json\u input\u string
,但当
我尝试在list1
的循环中这样做
(列表1包含unicode格式的数据,如[u'设置变量文本'
'',表']中的u'表达式文本'],而且大多数python
当我需要保留'\n'
时,我迄今为止尝试过的写函数都失败了
在替换字符串中。)
或
可能的解决方案2)
如果json_输入_字符串可以提供所需格式的数据
当我打印json_input_string时,即使其类型为'str',它也会给出如下输出:
有些是单引号,有些是双引号。我想皈依
将该字符串转换为不带单引号/双引号的输出,如和
写入文件
m=str(c)。替换(…)
新字符串位于m
,而不是c
。Python字符串是不可变的
谢谢大家的帮助。幸运的是我得到了答案。我是
思考,因为我没有将“\n”视为文本,所以它不在那里,而是它
只是换到一个新行,所以如果我只是从
此外,还需要通过将替换值指定给变量,将此替换保持在循环中
很好,谢谢你的努力
您是否知道脚本的最后一行再次打印
c
,而不是保存replace
结果的m
。您显示的list1
的唯一示例很可能是无意中使用的,'\n'
是使用原始文字禁用的换行符转义序列。请给我们输入数据、操作代码、生成结果以及您期望的内容的明确值(尝试使用repr
)。嗨,yann,我已更新了问题,以包括所有细节,直到看不到为止。单词Text
不在数据中出现,因此两个替换操作都不会产生任何效果。我还不明白为什么你的文本在格式奇怪的引号块中,代码中有分号。对不起,这是一个打字错误。我已经在代码中更新了它
import re;
import sys;
import json;
loc_file=str(sys.argv[1]) ;
open_json=open(loc_file);
data=json.load(open_json);
list1=data[0].get('statements');
json_input_string="";
json_input_string=str(list1);
json_input_string=json_input_string.replace(r"Text ' ' followed by text",r"Text '\n'"); # This replace works fine but the replace below fails for '\n'
f = open("Text.txt","w");
m=""
for c in list1:
#print "\n\n"+c
m=str(c).replace(r"Text ' '",r"Text '\n'"); # Here it fails (does not preserve 'n')
f.write(m+";\n")
json_input_string=[u'SET X=ABC', u'USE @{Domain}', u"Create table DEF"]
SET X=ABC;
USE @{Domain};
Create table DEF
replace("LINES TERMINATED BY ' '","LINES TERMINATED BY '\\n'");
to
replace("LINES TERMINATED BY '\n'","LINES TERMINATED BY '\\n'");