2015-11-08 84 views
0

我想删除imperfect.json中的最后一个逗号并用方括号替换它。使用Python删除字符串的最后一个字符后线条消失

imperfect.json(有在该文件的末尾一个空行)

... 
{ 
"Q1":"1242", 
"Q1":"14336", 
"Q2":"", 
"Q3":"11855", 
"Q4":"11496", 
"SubmitID":103, "Worksheet":5, "UserID":75}, 
{ 
"Q2":"", 
"Q2":"11110", 
"SubmitID":104, "Worksheet":5, "UserID":75}, 

但是,当我跑的下面的代码,它删除68行我的原始文件并成功所附右方括号最后。

f2 = open('imperfect.json') 

tempstr = f2.read() 
tempstr = tempstr[:-1] 
tempstr = tempstr + '}]' 

with open('useful_input.json', 'w') as perfect_file: 
    perfect_file.writelines(tempstr) 

我在useful_input.json得到

... 
{ 
"Q1":"1629", 
"Q2":"1950", 
"Q3":"0116", 
"Q4":"616", 
"SubmitID":91, "Worksheet":4, "UserID":72}, 
{ 
"Q4":"0616", 
"Q3":"0117", 
"SubmitID":92, "Worksheet":4, "UserID":72}, 
{ 
"Q1":"14336", 
"Q2":"11110"}] 

我怎么能只删除imperfect.json的最后一个字符?

+0

'writelines'旨在用于一系列字符串。你是否尝试过'写'? –

+0

我刚刚尝试过,它给出了相同的结果 – Tsing

+0

在我的Ubuntu 14.04系统上,使用Python 2我得到了正确的结果(以'UserID'结尾:75},}]') - 您使用的操作系统和Python版本是什么? –

回答

0

如果您只想删除最后一个字符,为什么添加了tempstr = tempstr + '}]'

从字符串只删除最后一个字符只使用string[:-1]

如果字符串以空格或结尾\ r,......与清洁:string.strip()

我希望这将是有益的。

0

这将会是如果你使用

tempstr = tempstr.rstrip(',\n') 

这有点不太容易出错比

tempstr = tempstr[:-1] 

后者变种条任何焦炭,更好地而只有前者条逗号或换行符,并留下任何其他字符。

相关问题