Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Regex_Expression_Extract_Text Extraction - Fatal编程技术网

Python 提取表达式

Python 提取表达式,python,regex,expression,extract,text-extraction,Python,Regex,Expression,Extract,Text Extraction,我有一个表达式,我想在Python2.6中提取它。以下是一个例子: [a]+[c]*0.6/[b]-([a]-[f]*0.9) 这将是: ( '[a]', '+', '[c]', '*', '0.6', '/', '[b]', '-', '(', '[a]', '-', '[f]', '*', '0.9', ')', ) 我需要一份清单。请帮我一把。谢谢。一种方法是创建一个正则表达式列表来匹配每个标记,例如: >>>

我有一个表达式,我想在Python2.6中提取它。以下是一个例子:

[a]+[c]*0.6/[b]-([a]-[f]*0.9)
这将是:

(
  '[a]',
  '+',
  '[c]',
  '*',
  '0.6',
  '/',
  '[b]',
  '-',
  '(',
  '[a]',
  '-',
  '[f]',
  '*',
  '0.9',
  ')',
)

我需要一份清单。请帮我一把。谢谢。

一种方法是创建一个正则表达式列表来匹配每个标记,例如:

>>> import re
>>> expr = '[a]+[c]*0.6/[b]-([a]-[f]*0.9)'
>>> re.findall('(?:\[.*?\])|(?:\d+\.*\d*)|.', expr)
['[a]', '+', '[c]', '*', '0.6', '/', '[b]', '-', '(', '[a]', '-', '[f]', '*', '0.9', ')']
import re
tokens = [r'\[.?\]', r'\(', r'\)', r'\+', r'\*', r'\-', r'/', r'\d+?.\d+', r'\d+']
regex = re.compile('|'.join(tokens))
然后可以在表达式上使用
findall
返回匹配项列表:

>>> regex.findall('[a]+[c]*0.6/[b]-([a]-[f]*0.9)')
<<< 
['[a]',
 '+',
 '[c]',
 '*',
 '0.6',
 '/',
 '[b]',
 '-',
 '(',
 '[a]',
 '-',
 '[f]',
 '*',
 '0.9',
 ')']
>>regex.findall('[a]+[c]*0.6/[b]-[a]-[f]*0.9'))

你是在做计算器还是什么?不是计算。我需要像示例一样提取它。。。。一旦你提取了它,你会做什么呢?我是python新手。我有一个退格按钮,当它点击时,我需要删除列表的最后一个元素/我将通过堆栈使用它。/。我认为这是一种非常简单的方法。
mylist.pop()
将删除列表中的最后一个元素。