所以我有這個復雜的字串,它是在決議 csv 檔案時在 python 中生成的。這是字串現在的狀態:
[
{'id': 1463, 'name': 'culture clash'},
{'id': 2964, 'name': 'future'},
{'id': 3386, 'name': 'space war'},
{'id': 3388, 'name': 'space colony'},
{'id': 3679, 'name': 'society'},
{'id': 3801, 'name': 'space travel'},
{'id': 9685, 'name': 'futuristic'},
{'id': 9840, 'name': 'romance'},
{'id': 9882, 'name': 'space'},
{'id': 9951, 'name': 'alien'},
{'id': 10148, 'name': 'tribe'},
{'id': 10158, 'name': 'alien planet'},
{'id': 10987, 'name': 'cgi'},
{'id': 11399, 'name': 'marine'},
{'id': 13065, 'name': 'soldier'},
{'id': 14643, 'name': 'battle'},
{'id': 14720, 'name': 'love affair'},
{'id': 165431, 'name': 'anti war'},
{'id': 193554, 'name': 'power relations'},
{'id': 206690, 'name': 'mind and soul'},
{'id': 209714, 'name': '3d'},
]
假設這個字串存盤在一個名為 x 的變數中。除了一遍又一遍地使用 .split('something') 將字串重新組合在一起直到沒有例外值為止,是否有更快的方法來決議這個字串?
我想要實作的是讓一些看起來更具可讀性和易于操作的東西,例如:
id: someNumber, name: someName... repeat until no more data
我試圖將繩子分開,然后多次將其重新組合在一起,直到達到預期的效果。還是有更好的方法來決議和操作這個字串?
基本上我需要提取所有 id 和相應的名稱,以便稍后插入到表中。
uj5u.com熱心網友回復:
我希望您已經匯入并使用了 csv 模塊。然后將字典附加到串列中。所以,它是“串列”而不是“字串”。
您可以使用以下內容列印此串列:
for i in range(len(test)):
print(f'id : {test[i]["id"]} name : {test[i]["name"]},', end=" ")
這test是串列的名稱。輸出是:
id : 1463, name : culture clash id : 2964, name : future id : 3386, ....
uj5u.com熱心網友回復:
如果您真的不想匯入任何通用模塊,您可以這樣做,但請注意,實作非常特定于資料,如問題所示:
yourstring = """[{"id": 1463, "name": "culture clash"}, {"id": 2964, "name": "future"}, {"id": 3386, "name": "space war"}, {"id": 3388, "name": "space colony"}, {"id": 3679, "name": "society"}, {"id": 3801, "name": "space travel"}, {"id": 9685, "name": "futuristic"}, {"id": 9840, "name": "romance"}, {"id": 9882, "name": "space"}, {"id": 9951, "name": "alien"}, {"id": 10148, "name": "tribe"}, {"id": 10158, "name": "alien planet"}, {"id": 10987, "name": "cgi"}, {"id": 11399, "name": "marine"}, {"id": 13065, "name": "soldier"}, {"id": 14643, "name": "battle"}, {"id": 14720, "name": "love affair"}, {"id": 165431, "name": "anti war"}, {"id": 193554, "name": "power relations"}, {"id": 206690, "name": "mind and soul"}, {"id": 209714, "name": "3d"}]"""
for d in eval(yourstring):
print(f'id: {d["id"]}, name: {d["name"]}')
輸出:
id: 1463, name: culture clash
id: 2964, name: future
id: 3386, name: space war
id: 3388, name: space colony
id: 3679, name: society
id: 3801, name: space travel
id: 9685, name: futuristic
id: 9840, name: romance
id: 9882, name: space
id: 9951, name: alien
id: 10148, name: tribe
id: 10158, name: alien planet
id: 10987, name: cgi
id: 11399, name: marine
id: 13065, name: soldier
id: 14643, name: battle
id: 14720, name: love affair
id: 165431, name: anti war
id: 193554, name: power relations
id: 206690, name: mind and soul
id: 209714, name: 3d
uj5u.com熱心網友回復:
解決方案
因為您的字串的內容是有效的 Python 代碼,所以您可以將其視為此。
yourstring = eval(yourstring)
print(type(yourstring)) # <class 'list'>
print(len(yourstring)) # 21
print(type(yourstring[0])) # <class 'dict'>
這使得每個元素中都有yourstring一個list()物件。dict()
警告
eval()但出于安全考慮,絕對不建議使用。但是您的“最小”作業示例沒有提供更多資訊以找到更好的解決方案。正如其他人所說,Python 的csvandjson模塊是一個更好、更安全的解決方案的良好開端。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/452319.html
