2015-11-08 91 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] 

後者變種條任何焦炭,更好地而只有前者條逗號或換行符,並留下任何其他字符。

相關問題