日语转文字python_Unicode文本在Python 2.7中表示为u'xxxx而不是日语

在使用Python 2.7处理日语文本时,遇到一个问题:从Unicode文件读取并写回的文本以u'xxxx形式表示而非原始日文。即使尝试了.encode()和.decode(),问题依然存在。该问题发生在使用Scrapy库抓取网页,提取信息创建新文件名和写入HTML内容时。文件名能正确显示日语,但文件内容被编码为u'xxxx。代码示例中,问题可能源于将HTML内容转换为str()时导致的。
摘要由CSDN通过智能技术生成

多年来,我在Python中使用Unicode时遇到了很多困难,因为我使用日语处理许多文本文件,所以我熟悉使用.encode(“utf-8”)将日语文本从日语显示回日语显示XXXX . 我没有得到任何编码/解码错误 . 但是我从unicode文件中读取文本,操作,然后写回新文件被表示为u'xxxx的字符串而不是原始的日文文本 . 我已经在多个地方尝试过.encode()和.decode(),并且每次都没有使用它们,每次都有相同的结果 . 欢迎任何建议 .

具体来说,我正在使用Scrapy库编写一个蜘蛛,它从它抓取的文件中获取文本,提取一些文本来构造新文件的文件名,然后将HTML文件的第一个div作为字符串写入新文件中文件 .

更令我困惑的是,我用来创建文件名的文本都用日语呈现,文件名本身也是如此 . 是因为我在div上使用str(),我将u'xxxx作为我文件的内容?请在代码末尾看到这一行 .

这是我的完整代码(请忽略它的一些hacky):

def parse_item(self, response):

original = 0

author = "noauthor"

title = "notitle"

year = "xxxx"

publisher = "xxxx"

typer = "xxxx"

ispub = 0

filename = response.url.split("/")[-1]

if "_" in filename:

filename = filename.split("_")[0]

if filename.isdigit():

title = response.xpath("//h1/text()").extract()[0].encode("utf-8")

author = response.xpath("//h2/text()").extract()[0].encode("utf-8")

ID = filename

bibliographic_info = response.xpath("//div[2]/text()").extract()

for subyear in bibliographic_info:

ispub = 0

subyear = subyear.encode("utf-8").strip()

if "初出:" in subyear:

publisher = subyear.split(":")[1]

original = 1

ispub = 1

if "入力:" in subyear:

typer = subyear.split(":")[1]

if len(subyear) > 1 and (original == 1) and (ispub == 0):

counter = 0

while counter < len(subyear):

if subyear[counter].isdigit():

break

counter+=1

if counter != len(subyear):

year = subyear[counter:(counter+4)]

original = 0

body = str(response.xpath("//div[1]/text()").extract())

new_filename = author + "_" + title + "_" + publisher + "_" + year + "_" + typer + ".html"

file = open(new_filename, "a")

file.write(body.encode("utf-8")

file.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值