Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从txt文件中删除特定字符?_Python_Regex_Python 3.x - Fatal编程技术网

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

Python 如何从txt文件中删除特定字符?,python,regex,python-3.x,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。除了转储/更改源代码之外,还有其他方法吗 string ='{hel

有一个包含以下内容的txt文件:

 {
 hello : 1,two:three,four:five,six:seven,
 }
如何删除上述字符串中的最后一个

同时将其用作词典,以供进一步研究。由于最后一个分隔符,无法对其进行分析

代码:

import json
d2=json.load(open(test.txt))
我不能更改源代码。因为我正在从一个json文件(json.dump)中提取数据并创建一个新的json。除了转储/更改源代码之外,还有其他方法吗

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)
输出类型将是字符串。所以,稍后将其转换为dict

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

尝试使用@selcuk获得一个有效的这将删除字符串中的最后一个
,而无需进一步导入

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
}

简单的
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,因为需要引用字典键;但是这超出了你的问题范围,所以我不会尝试解决这一部分。

一旦你删除最后一个
,你打算对内容做什么,
我正在运行一个循环,我不需要最后一个,需要删除它以作进一步的分析。我认为如果你从源头上解决问题会更好,由于您拥有的不是有效的json字符串,因此请修复您的源代码以生成正确的json字符串。这也将失败,因为属性名称没有被引用。您的问题在于生成json。将数据放在正确的结构(dict或list)中,使用
json.dump()
,如果值或键中有逗号该怎么办,例如
{“tw,o”:“三”,“四”:“fi,ve”}
这是非常低效的,因为它每次找到逗号都会重新处理整个文本文件。当有多个字典时,它也不起作用。这只会替换最后一个逗号。你跑了吗@德维什库马辛格。这只是你提到的类型(文本)的工作原理,Selcuk。如果你想要更多的字典。我建议你写一个函数来循环所有的文本。还有,你以后如何将输出转换成dict?因为你不能,给它一个try@AkalyaRaj它会为每个逗号重新生成和覆盖
string2
。更新原始答案而不是创建新答案可能更好?这将删除有效字典的最后一对
key:value
,例如
string='{hello:1,2:3,4:5,6:7}“
我对发布答案有点陌生,让我从下次开始尝试。谢谢你误解了我的意思。您的代码删除了我的示例中的最后一对。@selcuk,我可以知道这个示例吗。它对我来说仍然很好:?所以您将字符串反转两次,只是为了替换最后一个逗号?事实上,是的,但这只会更改字符串的表示形式,但这是额外的计算,对于较长的字符串来说效率非常低。这也会给您一个字符串,但是您不能使用它来创建字典这种方法是反转字符串的最快方法,因为您只需更改表示形式(请参见或),它仍然是
O(n)
,其中n是列表的长度,不确定这里所说的最快是什么意思