さまざまなタイプのリストの文字列をリストに変更する最も簡単な方法を見つけたいと思います。
例えば:
string = '[[Date1,Date2,Number1,Number2],[28Dec2018,29Dec2018,1.24,5]]'
に
list = [['Date1', 'Date2', 'Number1', 'Number2'], ['28Dec2018', '29Dec2018', 1.24, 5]]
モジュールast
が役立つ機能を提供していることは知っていますが、次の場合にのみ機能します。
string = '[["Date1","Date2","Number1","Number2"],["28Dec2018","29Dec2018",1.24,5]]'
ありがとう
string = '[[Date1,Date2,Number1,Number2],[28Dec2018,29Dec2018,1.24,5]]'
print(string.strip("[]").split(","))
出力:
['Date1', 'Date2', 'Number1', 'Number2'], ['28Dec2018', '29Dec2018', '1.24', '5']
編集:
string = '[[Date1,Date2,Number1,Number2],[28Dec2018,29Dec2018,1.24,5]]'
st = string.strip("[]").replace("[", "").replace("]", "").split(",")
listA = []
listB = []
c = 0
for s in st:
c = c + 1
if c <= 4:
if s.isdigit():
listA.append(int(s))
elif re.match("^\d+?\.\d+?$", s):
listA.append(float(s))
else:
listA.append(s)
else:
if s.isdigit():
listB.append(int(s))
elif re.match("^\d+?\.\d+?$", s):
listB.append(float(s))
else:
listB.append(s)
print([listA, listB])
出力:
[['Date1', 'Date2', 'Number1', 'Number2'], ['28Dec2018', '29Dec2018', 1.24, 5]]
または
あなたが変換したくない場合int
やfloat
、そのさらに短いです。
for s in st:
c = c + 1
if c <= 4:
listA.append(s)
else:
listB.append(s)
print([listA, listB])
出力:
[['Date1', 'Date2', 'Number1', 'Number2'], ['28Dec2018', '29Dec2018', '1.24', '5']]
または
コメントで@Bhathiyaペレラによって示唆されるように、1つのライナーキラーは使ってYAMLを:
import yaml
print(yaml.safe_load(string))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加