1. ホーム
  2. python

[解決済み] list' オブジェクトには 'find' という属性がありません。

2022-02-16 05:16:26

質問

基本的な質問なのですが、python初心者で解決方法がわかりません。

次の例のようなリストがあります。

entities = ["#1= IFCORGANIZATION($,'Autodesk Revit 2014 (ENU)',$,$,$)";, "#5= IFCAPPLICATION(#1,'2014','Autodesk Revit 2014 (ENU)','Revit');"]

私の問題は、リストから情報を追加する方法です。 "entities" を次のような形式で辞書に登録します。

dic = {'#1= IFCORGANIZATION' : ['$','Autodesk Revit 2014 (ENU)','$','$','$'], '#5= IFCAPPLICATION' : ['#1','2014','Autodesk Revit 2014 (ENU)','Revit']

を使ってやってみました。 "find" が、以下のようなエラーが発生します。 'list' object has no attribute 'find' ,

で、findメソッドなしでこれを行う方法がわからない。

どのように解決するのですか?

を使用することができます。 str.split を使って文字列を処理することができます。まず、各要素の文字列を '(' で、maxsplitは1です。

In [48]: dic=dict(e[:-1].split('(', 1) for e in entities) #using [:-1] to filter out ')'
    ...: print dic
    ...: 
{'#5= IFCAPPLICATION': "#1,'2014','Autodesk Revit 2014 (ENU)','Revit')", '#1= IFCORGANIZATION': "$,'Autodesk Revit 2014 (ENU)',$,$,$)"}

で、dict の各値を ',' :

In [55]: dic={k: dic[k][:-1].split(',') for k in dic}
    ...: print dic
{'#5= IFCAPPLICATION': ['#1', "'2014'", "'Autodesk Revit 2014 (ENU)'", "'Revit'"], '#1= IFCORGANIZATION': ['$', "'Autodesk Revit 2014 (ENU)'", '$', '$', '$']}

dict のキーと値のペアは順序がないことに注意してください。 '#1= IFCORGANIZATION' がそもそも表示されない。