Python分割字符串 有无和c++中的tokenizer同样功能的用法?

比如我想分割
a = f1(`MAX(b, 0.0, 1.0) + 0.5);
我要把这句指令分成
a f1 `MAX b 0.0 1.0 0.5
c++中使用tokenizer类可以很轻松的实现
用python如何实现?

import re
str="a = f1(`MAX(b, 0.0, 1.0) + 0.5);"
print re.split('[ ()+=;]+',str)

这样会多出一个'',可以把最后一个字符串去掉:
print re.split('[ ()+=;]+',str)[:-1]
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-11-11
回楼主。
在tokenize里,
这里有英文的参考文档

import tokenize
import StringIO

s = StringIO.StringIO( '21.3e-5*-.1234/81.7' )

g = tokenize.generate_tokens( s.readline )

for tokenum, tokeval, _, _, _ in g:
if tokenum == tokenize.NUMBER and '.' in tokeval:
result.extend( [( tokenize.NAME, 'Decimal' ),
( tokenize.OP, '(' ),
( tokenize.STRING, repr( tokeval ) ),
( tokenize.OP, ')' )] )
else:
result.append( ( tokenum, tokeval ) )

print result

这是我临时照抄的一个例子

参考资料:http://docs.python.org/library/tokenize.html

Python分割字符串 有无和c++中的tokenizer同样功能的用法?
import re str="a = f1(`MAX(b, 0.0, 1.0) + 0.5);"print re.split('[ ()+=;]+',str)这样会多出一个'',可以把最后一个字符串去掉:print re.split('[ ()+=;]+',str)[:-1]

c++和python区别大吗?
c++和python区别有:作用不同。 1、c++为编译型语言,python为解释型的脚本语言。 2、c++效率高,编程难;python效率低,编程简单。python一两句代码就搞定的东西,c++往往要写一大堆。 3、c++运行效率高于python,python代码和c++最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,python最终转换出来的CPU指...

C++ 的 string 为什么不提供 split 函数
C++的string类没有split函数,但是分割的功能可以通过find函数和substr函数来实现,即通过find找到分割时的某标志字符位置,然后再用substr取其中的子字符串。之所以没有split函数一方面可能是为了代码的灵活性考虑吧,另一方面是,如果提供分割函数的话,分割后的子字符串个数是不确定的,也就是说如何存储结...

c++和python有什么区别?
c++和python区别有:作用不同。1、c++为编译型语言,python为解释型的脚本语言。2、c++效率高,编程难;python效率低,编程简单。python一两句代码就搞定的东西,c++往往要写一大堆。3、c++运行效率高于python,python代码和c++最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,python最终...

c++和python先学哪个
C++需要编译执行的语言,Python是解释执行的语言;Python缩进严格,通过缩进区别代码块,而C++通过大括号标示;Python与C++的全局变量、循环语句和关键字的使用都不相同。运行效率:C++大于Python。Python代码和C++最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,Python最终转换出来的CPU指令会...

Python中有没有类似c语言中#define的功能?
python里根本用不到这样的功能。Python跟c是两种不同的语言,所谓不同的语言就是说有不同的关键字和语法,就像汉语和英语一样,并不是说你把一个汉语句子里的词全换成英语那就是英语句子了,有些东西并不是一一对应的。Python是一种什么语言:Python是一种相当高级的语言。高级的Python程序设计也是...

c++ split
在c++中,其实是没有java与python中定义的split()功能的函数,若是需要处理字符串的话可以试着采用其他方式,比如可以利用STL自己实现split函数。c++介绍:C++是属于C语言的继承,它既能够进行C语言的过程化程序设计,还能够进行以抽象数据类型为特点的基于对象的程序设计,当然也可以进行以继承与多态为...

c++和python先学哪个?
C++需要编译执行的语言,Python是解释执行的语言;Python缩进严格,通过缩进区别代码块,而C++通过大括号标示;Python与C++的全局变量、循环语句和关键字的使用都不相同。运行效率:C++大于Python。Python代码和C++最终都会变成CPU指令来跑,但一般情况下,比如反转和合并两个字符串,Python最终转换出来的CPU指令会...

Python 有没有和 C\/C++ 进程共享内存的方式
---python part--- from ctypes import windll.kernel32.SetLastError(-100)print windll.kernel32.GetLastError()getMessage=windll.kernel32.OpenFileMappingA getMessage.restype = c_int handle=getMessage(1,False,"Global\\\\MyFileMappingObject")if handle ==0:print 'open file mapping handle...

opencv库的python版为啥比c++版小这么多?是功能有区别吗
和 opencv_world300.lib 对应的是 cv2.pyd,是动态链接的库,通常你用的就是这两个文件。staticlib 文件夹下的是静态链接的库,通常用不到。opencv_world300.dll 这个文件是 OpenCV 3.0 之后才有的,之前每个模块都是独立一个 dll。两种方法各有优缺点,之前的更加灵活,现在的发布更加方便。

相似回答