用pythonre拆分字符串

用pythonre拆分字符串,python,regex,string,stdin,Python,Regex,String,Stdin,我正在用python从std中读取一个文件并输入一行,每行的格式如下: Id:0\t1.0,0.0,83,212,302,475\n 其中,\t代表制表符,\n代表新行。我想使用pythonregex来解析它,并获得一个包含所有且仅包含字符串数字的列表 E.g. ['0','1.0','0.0','83','212','302','475'] 你能告诉我如何在一行中实现这一点吗 my_str = 'Id:0\t1.0,0.0,83,212,302,475\n' re.findall('[\

我正在用python从std中读取一个文件并输入一行,每行的格式如下:

Id:0\t1.0,0.0,83,212,302,475\n
其中,
\t
代表制表符,
\n
代表新行。我想使用python
regex
来解析它,并获得一个包含所有且仅包含字符串数字的列表

E.g. ['0','1.0','0.0','83','212','302','475']
你能告诉我如何在一行中实现这一点吗

my_str = 'Id:0\t1.0,0.0,83,212,302,475\n'

re.findall('[\d\.]+',my_str)
Out[144]: ['0', '1.0', '0.0', '83', '212', '302', '475']
您也可以这样做:

[x.strip('Id:\n') for x in re.split('[\t,]',my_str)]
Out[143]: ['0', '1.0', '0.0', '83', '212', '302', '475']

但这有点脆弱(而且更难理解)

这是它所能做到的最平滑的!非常感谢…我能请你解释一下这个魔法是如何工作的吗?如果它被多次使用,我建议你编译正则表达式。@thefourtheye-你是什么意思?@Matteo基本上:匹配数字或十进制字符(
[\d\.]
)。贪婪地匹配(
+
)尽可能多的字符。返回列表中的所有匹配项。@这是不必要的四项。
re
模块缓存最后100个编译的正则表达式。