【发布时间】:2015-02-03 13:10:00
【问题描述】:
我收到以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 587: ordinal not in range(128)
我的代码:
import os
from bs4 import BeautifulSoup
do = dir_with_original_files = 'C:\Users\Me\Directory'
dm = dir_with_modified_files = 'C:\Users\Me\Directory\New'
for root, dirs, files in os.walk(do):
for f in files:
if f.endswith('~'): #you don't want to process backups
continue
original_file = os.path.join(root, f)
mf = f.split('.')
mf = ''.join(mf[:-1])+'_mod.'+mf[-1] # you can keep the same name
# if you omit the last two lines.
# They are in separate directories
# anyway. In that case, mf = f
modified_file = os.path.join(dm, mf)
with open(original_file, 'r') as orig_f, \
open(modified_file, 'w') as modi_f:
soup = BeautifulSoup(orig_f.read())
for t in soup.find_all('td', class_='test'):
t.string.wrap(soup.new_tag('h2'))
# This is where you create your new modified file.
modi_f.write(soup.prettify())
这段代码正在遍历一个目录,并为每个文件找到类 test 的所有 td,并将 h2 标记添加到 td 内的文本中。所以以前,它会是:
<td class="test"> text </td>
运行此程序后,将创建一个新文件:
<td class="test"> <h2>text</h2> </td>
或者这就是我希望它发挥作用的方式。不幸的是,目前,我收到了上述错误。我相信这是因为我正在解析一些包含重音字符的文本,并且是用西班牙语编写的,带有特殊的西班牙语字符。
我可以做些什么来解决我的问题?
【问题讨论】:
-
能否请您提供完整回溯?这将有助于显示错误发生的位置。
标签: python html unicode beautifulsoup python-unicode