0

Scrapy の結果から、1 つの不要な非 ASCII コード\u2013(別名character(150)またはen dash) がu'Director/Senior Director \u2013 Pathology'. \u2013パイプラインを使用して定期的に削除しようとしています,。しかし、次のコードは機能しませんでした。エラーメッセージも報告されません。

from datetime import datetime
from hashlib import md5
from scrapy.exceptions import DropItem
from twisted.enterprise import adbapi
import re
import string

class ReplaceASC2InTitlePipeline(object):
"""replace unwanted ASCII characters in titles"""

ascii_to_filter = ["\u2013",]

def process_item(self, item, spider):
    for word in self.ascii_to_filter:
        desc = item.get('title')

        if (desc) and word in desc:
            spider.log("\u2013 in '%s' was replace" % (item['title']) )

            item['title']=item['title'].replace("\u2013", ",")
            return item
    else:
        return item
4

2 に答える 2

0

"\u2013"Unicode にする必要があるため、次のように置き換えます。

ascii_to_filter = ["\u2013",]

と:

ascii_to_filter = [u"\u2013",]
于 2015-10-19T00:53:22.587 に答える
0

このstackoverflowの投稿Replace non-ASCII characters...を読んだ後、タイトルのすべての非ASCII文字を除外するこのコードを思いつきました。私の状況では、非 ASCII 文字は必要ないため、完全に機能します。

from datetime import datetime
from hashlib import md5
from scrapy.exceptions import DropItem
from twisted.enterprise import adbapi
import re
import string

class ReplaceASC2InTitlePipeline(object):
"""replace unwanted non-ASCII characters in titles"""

def process_item(self, item, spider):

    def remove_non_ascii(text):
        return ''.join(i for i in text if ord(i)<128)

    orig_titl = item.get('title')
    item['title'] = remove_non_ascii(orig_titl) 

    if item['title'] != orig_titl:
        spider.log("Non-ASCII character(s) was removed in '%s'" % (item['title']) )

    return item
于 2015-10-19T02:00:24.330 に答える