2010-11-30 9 views
3

私はASCII以外の文字を含む単一の文字列を持つリストを持っています。私の目標は、ASCII以外の文字を取り除き、リストを文字列に変換することです。 'list' object has no attribute 'read'Python: 'list'オブジェクトに 'read'属性がありません

私はtheseのほとんどを試みたと私はまだ、このエラーを毎回取得:

私は非ASCII文字を取り除くしようとするたびに、私はこのエラーを取得します。私は何が間違っているのか分からず、助けていただければ幸いです。

+14

は、私たちが精神的なものではなく、いくつかのコードを示しています。 –

+1

本当にコードはありません。あなたの入力と期待される出力だけで十分です。ファイルを渡すべきときにリストを渡していますが、私は今あなたに話すことができます。実際にリスト上で 'read'を呼び出そうとしていない限り... – aaronasterling

答えて

2

PY3:

thelist[0].encode('ascii','ignore').decode() 

これは、Python 2.xのために働く:

import string 
filter(lambda c:c in string.printable, thelist[0]) 
+0

なぜあなたの最初のビットをPython 3としてマークしますか? Python 2.6ではうまく動作します。 –

+0

@kabie: 'printable'は' ascii'の**サブセットです**;あなたは、OPが意図するよりも多くのデータを捨てています。 –

+0

@Chris Morgan:Python 2.6でエラーを投げます。 @ジョンMachin:あなたは正しいです。 "filter(curses.ascii.isascii、thelist [0])"のようになります。 – Kabie

0
result = ''.join([s.encode('ascii','ignore') for s in mylist]) 
+0

これは 'unicode'を' str'(py2)または 'str'を' bytes'(py3)に変換しています...おそらくOPが期待するものではありません。 –

+0

@Hugh、あなたの答えはこのu ''のインスピレーションを受けました。ここに@Johnのアドレスを指定しないでjoin(mylist).encode( 'ascii'、 'ignore')してください。 – kevpie

関連する問題