3

私はPythonプログラミングが初めてです。Python ファイルで次のコードを使用しています。

import gethtml
import articletext
url = "http://www.thehindu.com/news/national/india-calls-for-resultoriented-steps-at-asem/article5339414.ece"
result = articletext.getArticle(url)
text_file = open("Output.txt", "w")

text_file.write(result)

text_file.close()

ファイルarticletext.pyには次のコードが含まれています。

from bs4 import BeautifulSoup
import gethtml
def getArticleText(webtext):
    articletext = ""
    soup = BeautifulSoup(webtext)
    for tag in soup.findAll('p'):
        articletext += tag.contents[0]
    return articletext

def getArticle(url):
    htmltext = gethtml.getHtmlText(url)
    return getArticleText(htmltext)

しかし、次のエラーが表示されます:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in position 473: ordinal not in range(128)
To print the result into the output file, what proper code should I write ?

The output `result` is text in the form of a paragraph.
4

2 に答える 2

4
text_filefixed = open("Output.txt", "wb")
text_filefixed.write(bytes(result, 'UTF-8')) 
text_filefixed.close()

これでうまくいくはずです。試してみてください。

なんで?すべてをバイトとutf-8として保存するため、これらの種類のエンコードエラーは無視されます:D

編集 ファイルが同じフォルダーに存在することを確認してください。そうでない場合は、インポートの後にこのコードを配置すると、ファイル自体が作成されます。

text_filefixed = open("Output.txt", "a")
text_filefixed.close()

それを作成し、何も保存せず、ファイルを閉じます...しかし、人間の介入なしに自動的に作成されます。

Edit2 これは 3.3.2 でのみ機能することに注意してください。ただし、このモジュールを使用して 2.7 でも同じことができることはわかっています。いくつかの小さな違いは、(私が思うに) request は 2.7 では必要ないということですが、それを確認する必要があります。

from urllib import request
result = str(request.urlopen("http://www.thehindu.com/news/national/india-calls-for-resultoriented-steps-at-asem/article5339414.ece").read())
text_filefixed = open("Output.txt", "wb")
text_filefixed.write(bytes(result, 'UTF-8')) 
text_filefixed.close()

私と同じように、2.7 でこのエラーが見つかり、Python 2.7 で urllib.request が見つかります。

于 2013-11-11T18:00:57.123 に答える