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

Если строка заканчивается пробелами или \ г, ... очистить его: string.strip()

Я надеюсь, что это будет полезно.

0

Было бы лучше, если вы используете

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

Это немного меньше подвержены ошибкам, чем

tempstr = tempstr[:-1] 

Последний вариант полоса любого гольца, пока только бывшие полосы запятой или разрывом строки и оставляет любые другие символы в одиночку.

Смежные вопросы