我试图解析一个包含很多行的txt文件,如下所示:
470115572 cms_trk_dcs_05:CAEN/CMS_TRACKER_SY1527_7/branchController00/easyCrate3/easyBoard16/channel003
我正在制作一个字典,其中key是行中的第一个数字,值是(对于每个键)由斜杠"/"
分隔的单词,每个单词都保存到一个列表中,例如list1
获取所有{list2
将是所有{
但是当我使用pattern = re.split('\W',line)
来分割行时,它考虑到
":"
字符,我的意思是,当我试图打印cms_trk_dcs_05:CAEN
时,它只返回cms_trk_dcs_05
,如何将所有单词{
我是python的新人,如果这是dummys的话,我很抱歉 无论如何,提前谢谢你
使用^{} 首先匹配数字后面的空格,然后匹配“/”:
或者作为(不太明显的)一句话:
^{pr2}$但是请注意,第二种方法将第一个元素创建为列表。在
正如Trimax的注释所示:
:
(冒号)是一个非单词字符,所以要正确分割行,您需要在模式中包含它。或者用西娅的答案。在关于模式,
\W
等于[^a-zA-Z0-9_]
(https://docs.python.org/2/library/re.html#regular-expression-syntax),所以您只需在其中添加冒号:[^a-zA-Z0-9_:]
对于第二部分,只需使用结果列表的第一个元素作为dict键,并将剩余的列表以切片的形式分配给它。 像这样:
但是请注意,如果文本包含具有相同数字的行,则会丢失数据,因为在为现有键分配新值(本例中为单词列表)时,它将覆盖以前的值。在
相关问题 更多 >
编程相关推荐