Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中标记用户输入_Python - Fatal编程技术网

在Python中标记用户输入

在Python中标记用户输入,python,Python,我已经有一段时间没有真正使用python了。如何标记用户输入 比如说: 用户输入:嘿,我的名字是乔恩 标记器将根据空格对其进行拆分使用拆分来拆分字符串 str.split() 使用“拆分”来拆分字符串 str.split() 使用“拆分”来拆分字符串 str.split() 使用“拆分”来拆分字符串 str.split() 答案很简单。如果您有一个更复杂的令牌概念(例如,“Jon!”应该是1或2个令牌),请使用re.findall > re.findall(r'(\d+)|(\w+

我已经有一段时间没有真正使用python了。如何标记用户输入

比如说: 用户输入:嘿,我的名字是乔恩


标记器将根据空格对其进行拆分

使用拆分来拆分字符串

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,看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际输出