ユニコードオブジェクトのリストnames
があります。新しいリストparsed_names
を生成しようとしています.1つの名前を持つオブジェクトが文字列に変換され、名前のリスト文字列のリストに変換されます。他のユニコードオブジェクトのリストを文字列のリストに変換する
names = [u'Johnny', u'["Tamir", "Josh"]', u'Brad']
parsed_names = ['Johnny', ['Tamir', 'Josh'], 'Brad']
次のコードは、トリックを行いますが、私はむしろ場合にエラー(ValueError: malformed string
)をキャッチしていないと思います何か間違って行くことにした。
import ast
names = [u'Johnny', u'["Tamir", "Josh"]', u'Brad']
parsed_names = []
for n in names:
try:
parsed_names.append(ast.literal_eval(name))
except ValueError:
parsed_names.append(str(name))
print parsed_names
# ['Johnny', ['Tamir', 'Josh'], 'Brad']
注:私の最終的なゴア私は平らなリスト(['Johnny', 'Tamir', 'Josh', 'Brad']
)を作成することですが、私はすでにそのためのコードを持っており、私はこのステップを最初に取らなければならないと考えています。
次に、すべて仕事しています –
@PatrickHaugh彼は最初に文字列を評価しているので、リストのように見える文字列はリストに評価されます。きれいに評価されないものはすべて文字列として保持されます。 – onlynone
各文字列を評価するだけで問題に遭遇します。誰かの名前が "True"の場合、あなたは最終的なリストに追加されたブール値「True」を取得します。組み込みまたは予約語と一致する「名前」はすべて問題になります。 – onlynone