python分割字符串中文_在python中拆分字符串

本文介绍了一个简单的Python解析器实现,利用状态设计模式处理包含括号和引号的字符串。通过不同的模式(InitialMode、BracketMode、QuoteMode)处理不同类型的单词,实现了灵活的字符串拆分功能。
摘要由CSDN通过智能技术生成

下面是一个简单的解析器(根据示例输入进行测试),它引入了状态设计模式。在

在现实世界中,您可能希望使用PLY之类的东西来构建一个真正的解析器。在class SimpleParser(object):

def __init__(self):

self.mode = None

self.result = None

def parse(self, text):

self.initial_mode()

self.result = []

for word in text.split(' '):

self.mode.handle_word(word)

return self.result

def initial_mode(self):

self.mode = InitialMode(self)

def bracket_mode(self):

self.mode = BracketMode(self)

def quote_mode(self):

self.mode = QuoteMode(self)

class InitialMode(object):

def __init__(self, parser):

self.parser = parser

def handle_word(self, word):

if word.startswith('['):

self.parser.bracket_mode()

self.parser.mode.handle_word(word[1:])

elif word.startswith('"'):

self.parser.quote_mode()

self.parser.mode.handle_word(word[1:])

else:

self.parser.result.append(word)

class BlockMode(object):

end_marker = None

def __init__(self, parser):

self.parser = parser

self.result = []

def handle_word(self, word):

if word.endswith(self.end_marker):

self.result.append(word[:-1])

self.parser.result.append(' '.join(self.result))

self.parser.initial_mode()

else:

self.result.append(word)

class BracketMode(BlockMode):

end_marker = ']'

class QuoteMode(BlockMode):

end_marker = '"'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值