【发布时间】:2014-11-19 12:45:33
【问题描述】:
下面的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) : 如果替换方法在循环内工作 我正在尝试在两点更换 地方,带有原始字符串表示法的替换功能适用于 上述变量
json_input_string但相同的替换失败时 我尝试在list1的循环中这样做。(list1 有这样的 unicode 格式的数据 [u' set variable Text ' ' ',u'expression Text ' ' in table'] 而且大部分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
【问题讨论】:
-
您是否知道脚本的最后一行再次打印
c而不是m,它保存了您的replace的结果? -
对不起。我已经更新了代码..这是错字..
-
这个很难解释。您展示的唯一示例
list1可能是使用string literal concatenation,很可能是无意的,'\n'是换行符的转义序列,您使用原始文字禁用了它。请给我们输入数据、操作代码、产生的结果以及您期望的明确值(尝试使用repr)。 -
嗨,yann,我已更新问题以包含所有详细信息
-
还是没看到。
Text这个词不会出现在您的数据中,因此替换操作都不会产生任何效果。还对为什么您的文本使用奇怪格式的引号块和代码感染分号感到困惑。