我试图拆分字符串的某些部分,以完全隔离字符串的仅一部分。例如,在下面,我试图隔离金佰利公司的公开股价。
我尝试使用.split()
,但是这意味着我只能从一侧隔离开盘价格。例如,如果看起来像这样,
'1. open': '131.8600', '2. high': '132.0500', '3. low': '131.7900', '4. close': '132.0400', '5. volume': '76708'}, '2019-11-01 15:55:00':
我只能使用.split()获得
131.8600','2. high': '132.0500', '3. low': '131.7900', '4. close': '132.0400', '5. volume': '76708'}, '2019-11-01 15:55:00':
r = requests.get(https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=kmb&interval=5min&apikey=exampleapikey)
cont = json.loads(r.content.decode())
cont= str(cont)
ali = cont.split("{")
for x in range(9):
if x!= 1 and x!=0:
print(ali[x]+"\n")
else:
x+=1
'2019-11-01 16:00:00':
'1. open': '131.8600', '2. high': '132.0500', '3. low': '131.7900', '4. close': '132.0400', '5. volume': '76708'}, '2019-11-01 15:55:00':
'1. open': '131.6600', '2. high': '131.8700', '3. low': '131.6500', '4. close': '131.8600', '5. volume': '46212'}, '2019-11-01 15:50:00':
'1. open': '131.8800', '2. high': '131.8800', '3. low': '131.6500', '4. close': '131.6500', '5. volume': '17977'}, '2019-11-01 15:45:00':
'1. open': '131.8800', '2. high': '131.9100', '3. low': '131.8500', '4. close': '131.8800', '5. volume': '9575'}, '2019-11-01 15:40:00':
'1. open': '131.7300', '2. high': '131.9050', '3. low': '131.7300', '4. close': '131.8800', '5. volume': '12393'}, '2019-11-01 15:35:00':
我似乎无法弄清楚。对于造成混淆的语言,我们事先表示歉意
您确实不应该使用字符串操作。 GET请求以可爱的JSON格式为您提供了可能想要的一切。利用这一优势:
def main():
import requests
import json
url = "https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=kmb&interval=5min&apikey=exampleapikey"
response = requests.get(url)
assert response.status_code == 200
data = json.loads(response.text)
open_share_price = data["Time Series (5min)"]["2019-11-01 16:00:00"]["1. open"]
print(open_share_price)
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
输出:
131.8600
您是否尝试过这种方式?
r = requests.get("https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=kmb&interval=5min&apikey=exampleapikey")
cont = json.loads(r.content.decode())
cont= str(cont)
ali = cont.split("{")
for x in range(9):
if x!= 1 and x!=0:
price=ali[x].split(':')[1].split(',')[0]
print(price+"\n")
else:
x+=1
我假设每个条目都在单独的行中。如果不是,那么请准确显示三个连续的条目,且不修改任何字符。
问题是'}'和后面的'{']之间是否有清晰的分隔符>
这里我假设它是换行符(“ \ n”)
如果单引号是双引号,则{
和}
之间的字符串似乎是JSON格式,因此如果将'
替换为"
,则可以使用JSON进行解析。
for entry in cont.split("\n"): data = json.loads(entry.replace("'", '"')) open_value = float(data["1. open"))
如果没有换行符,而是两个条目之间只有一个空格,那么您可以执行以下操作:
for entry in cont.split("} {"): entry = entry.strip().replace("'", '"') if entry[0] != "{": entry = "{" + entry if entry[-1] != "}": entry += "}" data = json.loads(entry) open_value = float(data["1. open")) ...
如果'}'和'{'之间没有固定数量的空格字符,或者有其他任何字符,则可以使用
re.split()
for entry in re.split(r'\}.*?\{', cont):
entry = entry.strip().replace("'", '"')
if entry[0] != "{":
entry = "{" + entry
if entry[-1] != "}":
entry += "}"
data = json.loads(entry)
open_value = float(data["1. open"))
...