1

ファイルからの文字列をプログラムに入力した文字列と比較するのに問題があります。それらは等しいことを確認する必要がありますが、decode('utf-8')を使用しても、等しくないことがわかります。コードは次のとおりです。

final = open("info", 'r')
exported = open("final",'w')
lines = final.readlines()
for line in lines:
    if line == "Wykształcenie i praca": #error
    print "ok"

読んでみたファイルの保存方法:

comm_p = bs4.BeautifulSoup(comm)
comm_f.write(comm_p.prettify().encode('utf-8'))

for string in comm_p.strings:
      #print repr(string).encode('utf-8')
      save = string.encode('utf-8') #  there is how i save
      info.write(save)
      info.write("\n")        

info.close()

ファイルの先頭に#---コーディング:utf-8 ---

何か案は?

4

4 に答える 4

3

これはあなたが必要とすることをするはずです:

# -- coding: utf-8 --
import io

with io.open('info', encoding='utf-8') as final:
    lines = final.readlines()

for line in lines:
    if line.strip() == u"Wykształcenie i praca": #error
        print "ok"

ファイルを正しいエンコーディングで開く必要があります。文字列はASCIIではないため、Unicodeとしてマークする必要があります。

于 2012-09-24T07:57:15.093 に答える
0

違いは「\n」文字にある可能性があります

readlinesは'\n'を削除しません-Pythonで改行区切りファイルを読み取り、改行を破棄するための最良の方法を参照してください。

一般に、コードにUnicode文字列を含めることはお勧めできません。リソース・ファイルから読み取ることをお勧めします。

于 2012-09-24T07:50:50.010 に答える
0

まず、エンコーディングに関する基本的な知識が必要です。これは、開始するのに適した場所です。今すぐすべてを読む必要はありませんが、できる限り理解するようにしてください。

あなたの現在の問題について:

UTF-8でエンコードされたファイル(おそらく)を読んでいますが、ASCIIファイルとして読んでいます。open()変換は行いません。

だからあなたがする必要があること(少なくとも):

  • codecs.open("info", "r", encoding="utf-8")ファイルの読み取りに使用
  • 比較のためにUnicode文字列を使用します。if line.rstrip() == u"Wykształcenie i praca":
于 2012-09-24T07:54:50.120 に答える
0

文字列の比較にUnicodeを使用する

>>> s = u'Wykształcenie i praca'
>>> s == u'Wykształcenie i praca'
True
>>>

文字列に関しては、Unicodeが最も賢い方法です:)

于 2012-09-24T07:59:05.747 に答える