Я не уверен, что вы пытаетесь сделать. Вы можете реализовать цикл do-while следующим образом:
while True:
stuff()
if fail_condition:
break
Или:
stuff()
while not fail_condition:
stuff()
Что вы пытаетесь использовать цикл while, чтобы распечатать материал в список? Почему бы просто не использовать:
for i in l:
print i
print "done"
Обновление:
Итак, у вас есть список строк? И вы хотите продолжать перебирать его? Как насчет:
for s in l:
while True:
stuff()
# use a "break" instead of s = i.next()
Кажется ли это чем-то близким к тому, что вы хотите? С вашим примером кода это будет:
for s in some_list:
while True:
if state is STATE_CODE:
if "//" in s:
tokens.add( TOKEN_COMMENT, s.split( "//" )[1] )
state = STATE_COMMENT
else :
tokens.add( TOKEN_CODE, s )
if state is STATE_COMMENT:
if "//" in s:
tokens.append( TOKEN_COMMENT, s.split( "//" )[1] )
break # get next s
else:
state = STATE_CODE
# re-evaluate same line
# continues automatically
Чтобы распаковать словарь, используйте json_normalize
с аргументом record_path=...
.
import pandas.io.json as pd_json
data = pd_json.loads(result)
pd_json.json_normalize(data, record_path='data')
date marketCap
0 2018-01-12 232547809668.32000000
1 2018-01-13 241311607656.32000000
Если вам нужны и другие значения, передайте аргумент meta=....
:
df = pd_json.json_normalize(data,
record_path='data',
meta=['coin', 'dataType', 'baseCurrency'])
df
date marketCap ... dataType baseCurrency
0 2018-01-12 232547809668.32000000 ... marketCap USD
1 2018-01-13 241311607656.32000000 ... marketCap USD
df.columns
# Index(['date', 'marketCap', 'coin', 'dataType', 'baseCurrency'], dtype='object')