python在replace方法中跳过'\ n'

时间:2014-11-19 12:45:34

标签: python replace newline

  

以下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

2 个答案:

答案 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'"); 
  

您还需要通过将替换值赋给变量

来将此替换保存在循环中      

它工作正常:)。感谢您的努力