ユニコード文字列を含むリストを適切なlist
に変換する方法はありますか?eval()
またはast.literal_eval()
をPythonで使用しないでください。例えばevalまたはast.literal_evalを使わずに文字列を解析する方法
:
['hello', 'hi']
ユニコード文字列を含むリストを適切なlist
に変換する方法はありますか?eval()
またはast.literal_eval()
をPythonで使用しないでください。例えばevalまたはast.literal_evalを使わずに文字列を解析する方法
:
['hello', 'hi']
へ
"[u'hello', u'hi']"
が、これはあなたが探しているものだろうか?
a = "[u'hello', u'hi']".translate(None, "[]u'' ")
a = a.split(',')
print(a) #['hello', 'hi']
あなたが一緒に行くことができますので、あなたが文字列で'u'
を持っているときに失敗するようだ:
a = "[u'hello', u'hi', u'uyou']".translate(None, "[]' ")
a = [item[1:] for item in a.split(',')]
問題がありますか?OPにはこのタグ付きPython 3.xがあります。これは、提供された 'str.translate'の例が機能しないことを意味し、' ['または'] '(またはスペースなど) ..)文字列自体でそれらを失うことになる... –
それはあなたの入力のフォーマットのビットを依存します:
u
がある場合、'
,
の前には常に空白がありません。[u'
左右']
を取り除くことができ[
と]
前または後には空白が(便宜上、私はちょうど最後の要素に2番目に4番目の要素からそれをスライス)、存在しませんその後、', u'
で分割すれば完了です:
>>> s = "[u'hello', u'hi']"
>>> s[3:-2].split("', u'")
['hello', 'hi']
あなたはそれのためにあなた自身のパーサを書くことができます。これは、リストの構造について保証があれば簡単ですが、ast.literal_evalを使用しない理由はありません。 –
'eval()'と 'literal_eval()'がオプションになっていない理由をさらに追加できますか? – alecxe