2017-05-30 18 views
-1

ユニコード文字列を含むリストを適切なlistに変換する方法はありますか?eval()またはast.literal_eval()をPythonで使用しないでください。例えばevalまたはast.literal_evalを使わずに文字列を解析する方法

['hello', 'hi'] 
+2

あなたはそれのためにあなた自身のパーサを書くことができます。これは、リストの構造について保証があれば簡単ですが、ast.literal_evalを使用しない理由はありません。 –

+2

'eval()'と 'literal_eval()'がオプションになっていない理由をさらに追加できますか? – alecxe

答えて

0

"[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(',')] 
+0

問題がありますか?OPにはこのタグ付きPython 3.xがあります。これは、提供された 'str.translate'の例が機能しないことを意味し、' ['または'] '(またはスペースなど) ..)文字列自体でそれらを失うことになる... –

0

それはあなたの入力のフォーマットのビットを依存します:

  • それだけ含まれています」文字列 "
  • 文字列の前に常にuがある場合、
  • 各文字列は一重引用符で囲まれています'
  • ,の前には常に空白がありません。
  • あなたは、単に[u'左右']を取り除くことができ[]

前または後には空白が(便宜上、私はちょうど最後の要素に2番目に4番目の要素からそれをスライス)、存在しませんその後、', u'で分割すれば完了です:

>>> s = "[u'hello', u'hi']" 
>>> s[3:-2].split("', u'") 
['hello', 'hi'] 
関連する問題