如何从txt文件中删除特定字符?

时间:2019-06-19 06:24:21

标签: python regex python-3.x

具有包含内容的txt:

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

如何删除上述字符串中的最后一个,

,同时将它们用作词典。由于最后一个定界符,因此无法解析。

代码:

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

我无法更改源代码。因为我正在从一个json文件(json.dump)中提取数据并创建一个新的json。除了转储/更改源代码之外,还有什么其他方法

4 个答案:

答案 0 :(得分:2)

这将删除字符串中的最后一个,,而不需要其他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
}

答案 1 :(得分:2)

简单的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 :(得分:-1)

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)

输出类型为字符串。因此,稍后将其转换为字典。

答案 3 :(得分:-2)

import re
string ='{hello : 1,two:three,four:five,six:seven,}'
match = re.search(r'(.*),[^,]*$', string)
print (match.group(1)+"}")

尝试使用此@selcuk以获得高效