在Python中标记用户输入
我已经有一段时间没有真正使用python了。如何标记用户输入 比如说: 用户输入:嘿,我的名字是乔恩在Python中标记用户输入,python,Python,我已经有一段时间没有真正使用python了。如何标记用户输入 比如说: 用户输入:嘿,我的名字是乔恩 标记器将根据空格对其进行拆分使用拆分来拆分字符串 str.split() 使用“拆分”来拆分字符串 str.split() 使用“拆分”来拆分字符串 str.split() 使用“拆分”来拆分字符串 str.split() 答案很简单。如果您有一个更复杂的令牌概念(例如,“Jon!”应该是1或2个令牌),请使用re.findall > re.findall(r'(\d+)|(\w+
标记器将根据空格对其进行拆分使用拆分来拆分字符串
str.split()
使用“拆分”来拆分字符串
str.split()
使用“拆分”来拆分字符串
str.split()
使用“拆分”来拆分字符串
str.split()
答案很简单。如果您有一个更复杂的令牌概念(例如,“Jon!”应该是1或2个令牌),请使用re.findall
> re.findall(r'(\d+)|(\w+)', 'Jon is 10 years old')
[('', 'Jon'), ('', 'is'), ('10', ''), ('', 'years'), ('', 'old')]
请注意,这会将数字放在每个元组的左侧,其他字符串放在右侧。这将做你可能没有预料到的其他事情
> re.findall(r'(\d+)|(\w+)', 'Hi-yoo')
[('', 'Hi'), ('', 'yoo')]
查看一个不错的正则表达式教程,了解更多信息
答案很简单。如果您有一个更复杂的令牌概念(例如,“Jon!”应该是1或2个令牌),请使用re.findall
> re.findall(r'(\d+)|(\w+)', 'Jon is 10 years old')
[('', 'Jon'), ('', 'is'), ('10', ''), ('', 'years'), ('', 'old')]
请注意,这会将数字放在每个元组的左侧,其他字符串放在右侧。这将做你可能没有预料到的其他事情
> re.findall(r'(\d+)|(\w+)', 'Hi-yoo')
[('', 'Hi'), ('', 'yoo')]
查看一个不错的正则表达式教程,了解更多信息
答案很简单。如果您有一个更复杂的令牌概念(例如,“Jon!”应该是1或2个令牌),请使用re.findall
> re.findall(r'(\d+)|(\w+)', 'Jon is 10 years old')
[('', 'Jon'), ('', 'is'), ('10', ''), ('', 'years'), ('', 'old')]
请注意,这会将数字放在每个元组的左侧,其他字符串放在右侧。这将做你可能没有预料到的其他事情
> re.findall(r'(\d+)|(\w+)', 'Hi-yoo')
[('', 'Hi'), ('', 'yoo')]
查看一个不错的正则表达式教程,了解更多信息
答案很简单。如果您有一个更复杂的令牌概念(例如,“Jon!”应该是1或2个令牌),请使用re.findall
> re.findall(r'(\d+)|(\w+)', 'Jon is 10 years old')
[('', 'Jon'), ('', 'is'), ('10', ''), ('', 'years'), ('', 'old')]
请注意,这会将数字放在每个元组的左侧,其他字符串放在右侧。这将做你可能没有预料到的其他事情
> re.findall(r'(\d+)|(\w+)', 'Hi-yoo')
[('', 'Hi'), ('', 'yoo')]
查看一个好的正则表达式教程以了解更多信息。您可以使用一组正则表达式来标记字符串:
import re
tokens = (
('STRING', re.compile('"[^"]+"')), # longest match
('ID', re.compile('[a-zA-Z_]+')),
('SPACE', re.compile('\s+')),
('DIGIT', re.compile('\d+')),
)
def tokenizer(s):
i = 0
lexeme = []
while i < len(s):
match = False
for token, regex in tokens:
result = regex.match(s, i)
if result:
lexeme.append((token, result.group(0)))
i = result.end()
match = True
break
if not match:
raise Exception('lexical error at {0}'.format(i))
return lexeme
印刷品:
('ID', 'abcd')
('SPACE', ' ')
('ID', 'xvc')
('SPACE', ' ')
('DIGIT', '23432')
('SPACE', ' ')
('STRING', '"exampe"')
('SPACE', ' ')
('DIGIT', '366')
您可以使用一组正则表达式来标记字符串:
import re
tokens = (
('STRING', re.compile('"[^"]+"')), # longest match
('ID', re.compile('[a-zA-Z_]+')),
('SPACE', re.compile('\s+')),
('DIGIT', re.compile('\d+')),
)
def tokenizer(s):
i = 0
lexeme = []
while i < len(s):
match = False
for token, regex in tokens:
result = regex.match(s, i)
if result:
lexeme.append((token, result.group(0)))
i = result.end()
match = True
break
if not match:
raise Exception('lexical error at {0}'.format(i))
return lexeme
印刷品:
('ID', 'abcd')
('SPACE', ' ')
('ID', 'xvc')
('SPACE', ' ')
('DIGIT', '23432')
('SPACE', ' ')
('STRING', '"exampe"')
('SPACE', ' ')
('DIGIT', '366')
您可以使用一组正则表达式来标记字符串:
import re
tokens = (
('STRING', re.compile('"[^"]+"')), # longest match
('ID', re.compile('[a-zA-Z_]+')),
('SPACE', re.compile('\s+')),
('DIGIT', re.compile('\d+')),
)
def tokenizer(s):
i = 0
lexeme = []
while i < len(s):
match = False
for token, regex in tokens:
result = regex.match(s, i)
if result:
lexeme.append((token, result.group(0)))
i = result.end()
match = True
break
if not match:
raise Exception('lexical error at {0}'.format(i))
return lexeme
印刷品:
('ID', 'abcd')
('SPACE', ' ')
('ID', 'xvc')
('SPACE', ' ')
('DIGIT', '23432')
('SPACE', ' ')
('STRING', '"exampe"')
('SPACE', ' ')
('DIGIT', '366')
您可以使用一组正则表达式来标记字符串:
import re
tokens = (
('STRING', re.compile('"[^"]+"')), # longest match
('ID', re.compile('[a-zA-Z_]+')),
('SPACE', re.compile('\s+')),
('DIGIT', re.compile('\d+')),
)
def tokenizer(s):
i = 0
lexeme = []
while i < len(s):
match = False
for token, regex in tokens:
result = regex.match(s, i)
if result:
lexeme.append((token, result.group(0)))
i = result.end()
match = True
break
if not match:
raise Exception('lexical error at {0}'.format(i))
return lexeme
印刷品:
('ID', 'abcd')
('SPACE', ' ')
('ID', 'xvc')
('SPACE', ' ')
('DIGIT', '23432')
('SPACE', ' ')
('STRING', '"exampe"')
('SPACE', ' ')
('DIGIT', '366')
您可以使用
str.split()
执行此操作,但这样会删除空格。如果要保留空格,请使用list(str)
您可以使用str.split()
执行此操作,但这样会删除空格。如果要保留空格,请使用list(str)
您可以使用str.split()
执行此操作,但这样会删除空格。如果要保留空格,请使用list(str)
您可以使用str.split()
执行此操作,但这样会删除空格。如果您想保留空格,请使用list(str)
您是否正在查找str.split()
?类似的内容,但我希望它像一个外观,以便在每个实例中,Tok都具有字符串中的字符值。例如:虽然token不为null,但将该值推送到堆栈@cmdIt,看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是,包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、堆栈跟踪、编译器错误——任何适用的)。你提供的细节越多,你可能得到的答案就越多。哈哈,一点也不,伙计,我只是想知道一个函数及其工作原理。我可以自己编写代码@henrykeitera你只是在寻找str.split()
?类似的东西,但我希望它像一个外观,这样在每个实例中,Tok都有字符串中一个字符的值。例如:虽然token不为null,但将该值推送到堆栈@cmdIt,看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是,包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、堆栈跟踪、编译器错误——任何适用的)。你提供的细节越多,你可能得到的答案就越多。哈哈,一点也不,伙计,我只是想知道一个函数及其工作原理。我可以自己编写代码@henrykeitera你只是在寻找str.split()
?类似的东西,但我希望它像一个外观,这样在每个实例中,Tok都有字符串中一个字符的值。例如:虽然token不为null,但将该值推送到堆栈@cmdIt,看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是,包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、堆栈跟踪、编译器错误——任何适用的)。你提供的细节越多,你可能得到的答案就越多。哈哈,一点也不,伙计,我只是想知道一个函数及其工作原理。我可以自己编写代码@henrykeitera你只是在寻找str.split()
?类似的东西,但我希望它像一个外观,这样在每个实例中,Tok都有字符串中一个字符的值。例如:虽然token不为null,但将该值推送到堆栈@cmdIt,看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际输出