python函数中的日语

python函数中的日语,python,internationalization,Python,Internationalization,我用Python编写了一个函数,用来告诉我这两个词是否相似 现在我想在相同的函数中传递日语文本。它给出了错误“不是ascii字符”。我尝试使用utf-8编码,但它给出了相同的错误 Non-ASCII character '\xe3' in file 有办法吗?我不能为它生成msg文件,因为2关键字不是常量 代码在这里 def filterKeyword(keyword, adText, filterType): if (filterType == 'contains'): try :

我用Python编写了一个函数,用来告诉我这两个词是否相似

现在我想在相同的函数中传递日语文本。它给出了错误“不是ascii字符”。我尝试使用utf-8编码,但它给出了相同的错误

Non-ASCII character '\xe3' in file
有办法吗?我不能为它生成msg文件,因为2关键字不是常量

代码在这里

def filterKeyword(keyword, adText, filterType):
if (filterType == 'contains'):
    try :
        adtext = str.lower(adText)
        keyword = str.lower(keyword)
        if (adtext.find(keyword)!=-1):
            return '0'
    except:
        return '1'
if (filterType == 'exact'):
    var = cmp(str.lower(adText), str.lower(keyword))
    if(var == 0 ):
        return '0'

return '1'
我使用了以下方法:

filterKeyword(unicode('ポケモン').encode("utf-8"), unicode('黄色のポケモン').encode("utf-8"), 'contains')

filterKeyword('ポケモン'.encode("utf-8"), '黄色のポケモン'.encode("utf-8"), 'contains')
他们都给出了错误。

不要使用UTF-8。使用。

不要使用UTF-8。使用。

放置:

# -*- coding: utf-8 -*-
在脚本的前两行中的一行中。这样,解释器将知道代码和其中的字符串使用了什么编码

并尽可能使用Unicode字符串。如果您运气好,该函数可能会与Unicode(例如,
u“something…”
而不是
“something…”
)参数配合使用,即使它不是用Unicode编写的。

输入:

# -*- coding: utf-8 -*-
在脚本的前两行中的一行中。这样,解释器将知道代码和其中的字符串使用了什么编码

并尽可能使用Unicode字符串。如果您运气好,该函数可能会与Unicode(例如,
u“something…”
而不是
“something…”
)参数配合使用,即使它不是用Unicode编写的。

请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
请这样做:

adtext= adText.lower()
keyword = keyword.lower()
return adText.lower() == keyword.lower()
请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
请这样做:

adtext= adText.lower()
keyword = keyword.lower()
return adText.lower() == keyword.lower()
请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
请提供具体的例外情况。像
Exception
这样的泛型(超类)就可以了。存在一些非异常错误,您无法有意义地捕获这些错误

try:
    # something
except Exception:
    # handler
此外,捕获异常不太可能返回True

请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
您不太可能希望返回字符。您更可能希望返回True或False

return True
return False
如果你做得好,你的代码会工作的

>>> u'ポケモン'.lower() == u'黄色のポケモン'.lower()
False
>>> u'ポケモン'.lower() in  u'黄色のポケモン'.lower()
True
请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
请这样做:

adtext= adText.lower()
keyword = keyword.lower()
return adText.lower() == keyword.lower()
请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
请这样做:

adtext= adText.lower()
keyword = keyword.lower()
return adText.lower() == keyword.lower()
请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
请提供具体的例外情况。像
Exception
这样的泛型(超类)就可以了。存在一些非异常错误,您无法有意义地捕获这些错误

try:
    # something
except Exception:
    # handler
此外,捕获异常不太可能返回True

请不要这样做:

adtext = str.lower(adText)
keyword = str.lower(keyword)
cmp(str.lower(adText), str.lower(keyword))
try:
    # something
except:
    # handler
return '1' 
return '0'
您不太可能希望返回字符。您更可能希望返回True或False

return True
return False
如果你做得好,你的代码会工作的

>>> u'ポケモン'.lower() == u'黄色のポケモン'.lower()
False
>>> u'ポケモン'.lower() in  u'黄色のポケモン'.lower()
True
这对我很有用:

# -*- coding: utf-8 -*-

def filterKeyword(keyword, adText, filterType):
    # same as yours

filterKeyword(u'ポケモン', u'黄色のポケモン', 'contains')
这对我很有用:

# -*- coding: utf-8 -*-

def filterKeyword(keyword, adText, filterType):
    # same as yours

filterKeyword(u'ポケモン', u'黄色のポケモン', 'contains')

我只想指出:

unicode('ポケモン')(传递给unicode()构造函数的非unicode字符串常量)

不一样


u'ポケモン'
(一个unicode字符串常量)

我只想注意一下:

unicode('ポケモン')(传递给unicode()构造函数的非unicode字符串常量)

不一样



u'ポケモン'(unicode字符串常量)

让我猜猜你的代码是什么样子的。在我猜完你的代码之后,我将尝试发布并根据猜测回答。如果你想要一个有用的答案,你可以——也许——提供不起作用的代码。你可能想用Python 3.0+而不是Python 2.6+来完成这项工作。@Michael:2.x完全可以手动操作我知道这是非常温和的,但请不要用任何语言在上面发表亵渎。我个人并没有对此感到生气,但这已经足够被标记了,而且这里不是标记的地方。让我猜一下你的代码是什么样子。在我猜完你的代码之后代码看起来是这样的,我将尝试根据猜测发布和回答。如果您想要一个有用的答案,您可以--也许--提供不起作用的代码。您可能希望使用Python 3.0+而不是Python 2.6+。@Michael:2.x完全能够处理此问题。发布您遇到的完整错误,而不仅仅是一行。我理解它非常温和,但请不要用任何语言在SO上发表亵渎。我个人并没有被冒犯,但它已经足够被标记了,这不是它的位置。UTF-8是unicode的一种表示形式,所以这没有意义。而且,你的链接只是开始幻灯片,没有任何有用的信息。@Michael:它只是如果您没有阅读演示文稿,则没有意义。UTF-8是unicode的表示形式,因此没有意义。此外,您的链接只是开头幻灯片,没有任何有用的信息。@Michael:只有您没有阅读演示文稿,它才有意义。它给了我UnicodeDecodeError错误“'ascii'编解码器无法解码位置0:ordinal不在范围(128)中的字节0xe3”它给了我一个错误UnicodeDecodeError“'ascii'编解码器无法解码位置0:ordinal不在范围(128)中的字节0xe3”您错过了除
之外的空白
。代码只工作了一半。当我尝试查找if(adtext.find(关键字)时,它出现异常!=-1):@ha22109。我在
操作符中发布了
,这是有原因的。你认为这是什么原因?除了
,你错过了最基本的
。代码只工作了一半。当我尝试查找if(adtext.find(关键字)!=-1时,它会出现异常:@ha22109.我在
操作符中发布了
,这是有原因的。你认为原因是什么?