Python函数中的日语
我写了一个Python函数,用来判断两个单词是否相似。
现在我想把日文文本传入这个函数,但它报错说“不是ASCII字符”。我尝试使用utf-8编码,但还是出现同样的错误。
Non-ASCII character '\xe3' in file
有没有办法解决这个问题?因为这两个关键词是不固定的,所以我无法生成msg文件。
下面是我的代码
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')
这两种方法都报错了。
5 个回答
0
放置:
# -*- coding: utf-8 -*-
在你脚本的前两行之一。这样解释器就能知道代码和字符串使用的是什么编码。
尽量使用Unicode字符串。如果运气好的话,即使这个函数最初不是为了支持Unicode而写的,它也可能能很好地处理Unicode参数(比如用u"某些内容…"
代替"某些内容..."
)。
1
请不要这样做:
adtext = str.lower(adText)
keyword = str.lower(keyword)
请这样做:
adtext= adText.lower()
keyword = keyword.lower()
请不要这样做:
cmp(str.lower(adText), str.lower(keyword))
请这样做:
return adText.lower() == keyword.lower()
请不要这样做:
try:
# something
except:
# handler
请提供一个具体的异常类型。像 Exception
这样的通用异常可以接受。但有些错误不是异常,无法有效捕捉。
try:
# something
except Exception:
# handler
另外,捕捉异常后返回 True 的可能性非常小。
请不要这样做:
return '1'
return '0'
你可能不想返回一个字符。更可能的是你想返回 True 或 False。
return True
return False
如果你按照正确的方法来做,你的代码会正常工作。
>>> u'ポケモン'.lower() == u'黄色のポケモン'.lower()
False
>>> u'ポケモン'.lower() in u'黄色のポケモン'.lower()
True
3
这个对我有效:
# -*- coding: utf-8 -*-
def filterKeyword(keyword, adText, filterType):
# same as yours
filterKeyword(u'ポケモン', u'黄色のポケモン', 'contains')