dav*_*vid 19 python character-encoding python-2.7
我有html文件称test.html
它有一个字?????
.
我打开test.html并使用以下代码块打印它的内容:
file = open("test.html", "r")
print file.read()
Run Code Online (Sandbox Code Playgroud)
但它打印??????
,为什么会发生这种情况,我该如何解决?
BTW.当我打开文本文件时它很好用.
编辑:我试过这个:
>>> import codecs
>>> f = codecs.open("test.html",'r')
>>> print f.read()
?????
Run Code Online (Sandbox Code Playgroud)
vks*_*vks 34
import codecs
f=codecs.open("test.html", 'r')
print f.read()
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情.
小智 12
我今天也遇到了这个问题。我使用的是Windows,系统语言默认为中文。因此,有人可能会遇到类似的 Unicode 错误。只需添加encoding = 'utf-8'
:
with open("test.html", "r", encoding='utf-8') as f:
text= f.read()
Run Code Online (Sandbox Code Playgroud)
您可以使用'urllib'阅读HTML页面.
#python 2.x
import urllib
page = urllib.urlopen("your path ").read()
print page
Run Code Online (Sandbox Code Playgroud)
使用带有编码参数的codecs.open。
import codecs
f = codecs.open("test.html", 'r', 'utf-8')
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码:
from __future__ import division, unicode_literals
import codecs
from bs4 import BeautifulSoup
f=codecs.open("test.html", 'r', 'utf-8')
document= BeautifulSoup(f.read()).get_text()
print document
Run Code Online (Sandbox Code Playgroud)
如果要删除其间的所有空行并将所有单词作为字符串(也避免使用特殊字符,数字),则还包括:
import nltk
from nltk.tokenize import word_tokenize
docwords=word_tokenize(document)
for line in docwords:
line = (line.rstrip())
if line:
if re.match("^[A-Za-z]*$",line):
if (line not in stop and len(line)>1):
st=st+" "+line
print st
Run Code Online (Sandbox Code Playgroud)
*最初定义st
为string
st=""
归档时间: |
|
查看次数: |
114355 次 |
最近记录: |