Как удалить определенный символ из текстового файла? - PullRequest
0 голосов
/ 19 июня 2019

Есть текст с содержанием:

 {
 hello : 1,two:three,four:five,six:seven,
 }

как удалить последние , в приведенной выше строке?

при использовании их в качестве словарей для дальнейшего использования.он не может быть проанализирован из-за последнего разделителя.

код:

import json
d2=json.load(open(test.txt))

Я не могу изменить исходный код.Потому что я извлекаю данные из файла json (json.dump) и создаю новый json.Есть ли способ сделать это, кроме дампа / изменения исходного кода

Ответы [ 4 ]

2 голосов
/ 19 июня 2019

Простой replace должен работать нормально.

broken_json = '''{
  hello : 1,two:three,four:five,six:seven,
  bye : 42,ick:poo,zoo:bar,}'''
j = broken_json.replace(',}', '}').replace(',\n}','\n}')

Результат на этом этапе все еще не является допустимым JSON, потому что ключи словаря должны быть заключены в кавычки;но это выходит за рамки вашего вопроса, поэтому я не буду пытаться решить эту часть.

2 голосов
/ 19 июня 2019

Это удаляет последние , в вашей строке без необходимости каких-либо дальнейших import.

with open('test.txt', 'r') as f:
   s = f.read()
s = s[::-1].replace(',', '', 1)[::-1]

тогда вывод s будет:

{
 hello : 1,two:three,four:five,six:seven
}
0 голосов
/ 19 июня 2019
import re
string ='{hello : 1,two:three,four:five,six:seven,}'
match = re.search(r'(.*),[^,]*$', string)
print (match.group(1)+"}")

Попробуйте этот @selcuk для эффективного

0 голосов
/ 19 июня 2019
string ='{hello : 1,two:three,four:five,six:seven,}'
length = len(string)

for i in range(length):
   if(string[i] == ','):
      string2 = string[0:i] + string[i + 1:length]
print (string2)

Тип вывода будет строкой.Итак, позже конвертируем его в диктовку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...