我正在尝试在日语地址中找到某些单词,以便可以对其进行擦洗。如果只有一个字符,则正则表达式可以正常工作,但是它们似乎找不到2个或更多字符的字符串:
import re
add = u"埼玉県川口市金山町12丁目1-104番地"
test = re.search(ur'["番地"|"丁目"]',add)
print test.group(0)
丁
我可以使用re.findall
代替re.search
,但是它将所有发现放入一个元组中,因此我必须解析该元组。如果那是最好的方式,我可以忍受,但我认为我缺少了一些东西。
在上面的示例中,我想用破折号交换“丁目”并删除尾随的“番地”,这样地址就读成:
Sa玉县川口市金山町12-1-104
您正在|
字符类([....]
)内部使用。它将匹配那里列出的所有字符;这不是你想要的。
指定不带字符类的模式。(也没有"
)
>>> import re
>>> add = u"埼玉県川口市金山町12丁目1-104番地"
>>> test = re.search(ur'番地|丁目', add)
>>> test.group(0)
u'\u4e01\u76ee'
>>> print test.group(0)
丁目
要获得所需的内容,请使用str.replace
(unicode.repalce
)和re.sub
。
>>> print re.sub(u'番地$', u'', add.replace(u'丁目', u'-'))
埼玉県川口市金山町12-1-104
$
仅用于匹配字符串的末尾。如果的位置番地$
无关紧要,则不需要正则表达式。str.replace
足够:
>>> print re.sub(u'番地$', u'', add.replace(u'丁目', u'-'))
埼玉県川口市金山町12-1-104
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句