以下json,这是我读取数据的地方 - >
[
{
"Name": "ABC",
"state": "MA",
"statements": [
"SET X=ABC",
"USE @{Domain}",
"Create table DEF"
],
"parameters":
[
{"name": "Domanin", "required": true, "description": "this is the domain name"}
]
}
]
=============================================== ========================================
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方法在循环内部工作 我想在两点做替换 使用原始字符串表示法的替换函数 上面的变量
json_input_string
但是同样的替换失败了 我尝试在list1
的循环中执行此操作。(list1包含unicode格式的数据,如[u' set variable Text' ' ',你'表达文字' '在表格中#];而且大部分的python都读过 当我需要保留
'\n'
时,到目前为止我尝试过的写函数失败了 在替换字符串中。) 要么 可能的解决方案2) 如果json_input_string可以给我所需格式的数据 当我打印json_input_string它给我输出如下,即使它的类型是' str':
json_input_string=[u'SET X=ABC', u'USE @{Domain}', u"Create table DEF"]
有些有单引号,有些有双引号。我想转换 这个字符串输入到没有像这样的单引号/双引号的输出中 写入文件。
SET X=ABC;
USE @{Domain};
Create table DEF
答案 0 :(得分:0)
m = str(c).replace(...)
新字符串位于m
,而不是c
。 Python字符串是不可变的。
答案 1 :(得分:0)
非常感谢大家的帮助。我得到了答案。我曾是 思考,因为我没有看到'\ n'作为文本它不存在而是它 只是转换到一个新行,所以如果我只是从
更改我的替换方法
replace("LINES TERMINATED BY ' '","LINES TERMINATED BY '\\n'");
to
replace("LINES TERMINATED BY '\n'","LINES TERMINATED BY '\\n'");
您还需要通过将替换值赋给变量
来将此替换保存在循环中它工作正常:)。感谢您的努力