我得到的代码实际上在同一个列表中保存了三个不同的数据字符串。每个列表都是分开的,我甚至不确定这是否有意义......所以我只是粘贴代码:
filename = "datosdeusuario.txt"
leyendo = open(filename, 'r+')
buffer = leyendo.read()
leyendo.close()
if not user.name in buffer:
escribiendo = open(filename, 'a')
escribiendo.write(json.dumps([user.name, string2, string3])+"\n")
escribiendo.close()
print(str(horaactual)[:19] + ": Data from " + user.name + " added")
该代码正在保存这样的信息(并且工作几乎完美):
["saelyth", "thisisanexampleforstring2", "andthisisanexampleforstring3"]
["anothername", "thisisanothernexampleforstring2", "andthisisanotherexampleforstring3"]
["John Connor", "exampleforstring2", "exampleforstring3"]
所以我的实际问题和问题是......从该文件中获取特定字符串的最佳方法是什么?
例如,假设我想要检索第一个字符串,第二个字符串和第三个字符串 if user.name是John Connor
(我的意思是,列表中找到名称的所有三个值)。我似乎无法找到一种正确的方式来谷歌搜索。预期的代码是这样的:
if user.name is in found in any list(position1) of the file datosdeusuario.txt
then
retrieveddata1 = List where value1 is user.name(get value1)
retrieveddata2 = List where value1 is user.name(get value2)
retrieveddata3 = List where value1 is user.name(get value3)
我不知道该怎么做。这就是为什么我只是编写代码来解释这种情况。
答案 0 :(得分:1)
我不确定这是否是你想要的,但是:
filename = "datosdeusuario.txt"
f = open(filename,"r")
filedata = f.read()
f.close()
sp1 = filedata.split("\n")
a = ""
for x in sp1:
if "joao m" in x:
a = x
if(len(a) > 0):
sp2 = a.split('"')
values = []
for x in sp2:
if not(x == ", " or x == "]" or x == "[" or len(x) == 0):
values.append(x)
print values[0] #should by the name
print values[1] #value 2
print values[2] #value 3
else: #No username in the file
#do something
pass
答案 1 :(得分:0)
也许这会奏效:
retrieveddata1 = retrieveddata2 = retrieveddata3 = None
filename = "datosdeusuario.txt"
for line in open(filename, 'r'):
retrieved = json.loads(line)
if retrieved[0] == 'jonh connor':
retrieveddata1 = retrieved[0]
retrieveddata2 = retrieved[1]
retrieveddata3 = retrieved[2]
break
答案 2 :(得分:0)
我建议您使用通用解决方案来解决从JSON对象中提取数据的问题,即jsonpath。 PyPi有这个库https://pypi.python.org/pypi/jsonpath/
if jsonpath.jsonpath(jsondata,'$[0]') == 'John Connor':
result = jsonpath.jsonpath(jsondata,'$[2]')
是的,Python库的文档很糟糕,但代码很容易通读,其他实现者可以很好地记录JSONPATH表达式。
通过添加以下内容来考虑使代码更清晰:
NAME = '$[0]'
STUFF = '$[1]'
OTHERSTUFF = '$[2]'