使用python创建一个中文文件夹

时间:2012-06-25 05:49:45

标签: python beautifulsoup

我现在遇到一个关于中国人的问题。 我使用beautifulsoup来提取数据,并希望创建一个文件夹使用提取数据的名称。 数据喜欢:

<A href="love">星座(1824)</A>

我想提取'星座(1824)',所以我喜欢

soup.find('a',href='love')

但在控制台中,它出来了:

ÐÇ×ù(1824)

我在我的源头使用'# - - 编码:utf-8 - - '。 它必须是一些编码问题,任何人都可以提供一些关于非英语python工作的好材料吗?

我想创建一个名为'星座(1824)'的文件夹 我这样做:

if not os.path.exists(dir_name):
        os.mkdir('./pic/'+dir_name) 

当我发现名为“ÐÇ×ù(1824)”的文件夹存在时,为什么它仍然出现:

OSError: [Errno 17] File exists: './vguagua_pic/\xc3\x90\xc3\x87\xc3\x97\xc3\xb9(1824)'

THX

2 个答案:

答案 0 :(得分:3)

即使您的.py脚本是用UTF-8编写的,如果网页不是,则解析后的文本也可能不正确。

网页的编码实际上是GB-2312(或GB-18030),但是BeautifulSoup错误地猜测网页的编码为ISO-8859-1,并且使用错误的假设,转换为UTF-8并导致mojibake。我们可以验证:

>>> b'\xc3\x90\xc3\x87\xc3\x97\xc3\xb9'.decode('utf8').encode('latin1').decode('gb2312')
'星座'

您可以将from_encoding="gb2312"(在bs4中)或fromEncoding="gb2312"(在3.x中)添加到BeautifulSoup构造函数中以强制进行编码,如Beautiful Soup Documentation (and also in Chinese 中文文档)中所述

答案 1 :(得分:0)

您的问题很可能是您的控制台无法显示中文字符。

我在Win7上尝试了这个,使用以下代码:

# -*- coding: utf-8 -*-
import os
os.mkdir(u'星座(1824)')
dos控制台将中文字符显示为两个框,但是,在这里粘贴它们时它们会正确显示:

2012-06-25  07:59    <DIR>          星座(1824)

它们也会在Windows资源管理器中正确显示。