Bölme Python bir sözlük için noktalı virgülle ayrılmış bir dize,
Bu gibi bir dize var:
"Name1=Value1;Name2=Value2;Name3=Value3"
Bu yaptığım sanki bu dize almak ve bir sözlük oluşturmak, yerleşik sınıf/Python fonksiyon: var
dict = {
"Name1": "Value1",
"Name2": "Value2",
"Name3": "Value3"
}
Modüller kullanılabilir aradım ama uyan bir şey bulamıyorum.
< / ^ hr .
Teşekkürler, böyle ufacık çözüm olduğundan ilgili kendimi kodu nasıl biliyorum, ama genellikle mayın tarlaları ne bekliyor (örn. birisi yazıyor: Ad1='Değer1=2';) vb. sonra ben genellikle ön-test bazı işlev tercih ederim.
- Ben de tek başıma yaparım.
CEVAP
Yerleşik var, ama jeneratör bir anlama ile bu oldukça basit yapabilirsiniz:
s= "Name1=Value1;Name2=Value2;Name3=Value3"
dict(item.split("=") for item in s.split(";"))
[Düzenle]Güncellemenizi alıntı işlemek için gerekebilir size gösteriyor. Bu şeyleri arıyorsanız tam formatı ne (ne alıntı karakter kabul edilir, ne karakter vb kaçış) bağlı olarak daha da karmaşıklaştırıyor. Csv modülü at eğer format anlatabileceğiniz, görmek için bakmak isteyebilirsiniz. İşte bir örnek: CSV kayıtları bir dizi üzerinden yineleme yapmak için, bu yüzden .tasarlanmıştır (API bu örnek için biraz aksak olduğunu Unutmayın, sadece ilk satırı bakmak için yapıyorum() gelecek diyor. İhtiyaçlarınıza göre ayarlayın):
>>> s = "Name1='Value=2';Name2=Value2;Name3=Value3"
>>> dict(csv.reader([item], delimiter='=', quotechar="'").next()
for item in csv.reader([s], delimiter=';', quotechar="'").next())
{'Name2': 'Value2', 'Name3': 'Value3', 'Name1': 'Value1=2'}
Biçimi tam yapısına bağlı olarak, kendi basit ayrıştırıcı ancak yazmak gerekebilir.
Nasıl bir virgülle ayrılmış Dize Için ...
Java: bölme virgülle ayrılmış bir dize...
/Dizi/Liste koleksiyonundan virgülle a...
Nasıl virgülle ayrılmış bir dize bölme...
Nasıl Python bir sözlük için xml bir d...