2014-10-10 97 views
0

該程序顯示類型錯誤:預期的字符串或緩衝區模式在馬來亞匹配使得類型錯誤:預期的字符串或緩衝區

# coding=utf-8 
import re 

s = [u'ഓ൪മകളൂടെ സുഗന്ധം പേറുന്ന ഒരു പൂക്കാലം.'] 

v={'q':s[0].encode('utf-8')} 

match = re.search(r'സുഗന്ധം', s) 
if match:      
    print 'found', match.group() 

else: 
    print 'did not find' 
+0

我不認爲我們可以重新使用其他成績單/字母 – 2014-10-10 18:02:24

+0

看到,例如:http://stackoverflow.com/questions/14859957/regular-expressions-with-indian-characters – 2014-10-10 18:03:47

+0

我應該怎麼做模式匹配在馬拉雅拉姆我可以得到的代碼 – nkv 2014-10-10 18:04:39

回答

1

您正在使用re.search,這需要一個模式,一個字符串。
您將第二個參數作爲列表。
而你已經指出你的正則表達式搜索字符串是unicode。所以在字符串中使用u'സുഗന്ധം'
測試,它的工作原理 -

import re 
# -*- coding: utf-8 -*- 
s = u'ഓ൪മകളൂടെ സുഗന്ധം പേറുന്ന ഒരു പൂക്കാലം.' 
pat = re.compile(u'സുഗന്ധം') 
match = re.search(pat, s) 
if match: 
    print match.group() 
#OUTPUT - സുഗന്ധം 
+0

是否有任何方法可以在終端中清晰地輸出(malayalam)。 – nkv 2014-10-12 13:45:42

2

(題外話:我批准了編輯的問題,但它需要另外的審批者。)

你有一對夫婦的問題,這條線:

match = re.search(r'സുഗന്ധം', s) 

問題:
1.第一個參數不應該是一個原始字符串。
2. s是一個列表。這是TypeError發生的位置,因爲re.search需要第二個參數的字符串。

而是做:

match = re.search(u'സുഗന്ധം', s[0]) 
相關問題