Python malayalam中的模式匹配会导致TypeError:应为字符串或缓冲区

Python malayalam中的模式匹配会导致TypeError:应为字符串或缓冲区,python,Python,此程序显示TypeError:应为字符串或缓冲区 # 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

此程序显示TypeError:应为字符串或缓冲区

# 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'
(旁白:我已批准编辑问题,但需要另一位批准人。)

这一行有几个问题:

match = re.search(r'സുഗന്ധം', s)
问题:
1.第一个参数不应是原始字符串。
2. <代码>s是一个列表。这就是
TypeError
出现的原因,因为
re.search
需要一个字符串作为第二个参数

相反,你应该:

match = re.search(u'സുഗന്ധം', s[0])
(旁白:我已批准编辑问题,但需要另一位批准人。)

这一行有几个问题:

match = re.search(r'സുഗന്ധം', s)
问题:
1.第一个参数不应是原始字符串。
2. <代码>s是一个列表。这就是
TypeError
出现的原因,因为
re.search
需要一个字符串作为第二个参数

相反,你应该:

match = re.search(u'സുഗന്ധം', s[0])
您正在使用,它需要一个模式和一个字符串
您将第二个参数作为列表提供。
并且您已经指出您的正则表达式搜索字符串是unicode。所以使用
u'സുഗന്ധം'
在字符串上测试,它可以工作-

import re
# -*- coding: utf-8 -*-
s = u'ഓ൪മകളൂടെ സുഗന്ധം പേറുന്ന ഒരു പൂക്കാലം.'
pat = re.compile(u'സുഗന്ധം')
match = re.search(pat, s)
if match:
    print match.group()
#OUTPUT - സുഗന്ധം
您正在使用,它需要一个模式和一个字符串
您将第二个参数作为列表提供。
并且您已经指出您的正则表达式搜索字符串是unicode。所以使用
u'സുഗന്ധം'
在字符串上测试,它可以工作-

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

我不认为可以将re用于其他成绩单/字母表参见,例如:我应该如何在malayalam中进行模式匹配我能得到代码吗,我真的无法在这方面提供更多帮助,但您可以安装nltk来标记您的单词,然后将正则表达式应用于您的标记:@bernie gotcha:)在编辑之前,print语句在文本中丢失了我不认为可以将re用于其他成绩单/字母表请参见,例如:我应该如何在malayalam中进行模式匹配我可以获得代码Googd luck,我真的无法在这方面提供更多帮助,但您可以安装nltk来标记您的单词,然后将正则表达式应用于您的标记:@bernie gotcha:)在编辑之前,print语句在文本中丢失。是否有任何方法可以在终端中清晰地打印输出(malayalam)。是否有任何方法可以在终端中清晰地打印输出(malayalam)。