将字符串拆分为多个字符-Python

时间:2018-08-04 17:58:03

标签: python

我有一个字符串:

V51M229D180728T132714_ACCEPT_EC_NC

这需要分成

String 1 : V51 (Can be variable but always ends before M)
String 2 : M22 (Can be variable but always ends before D)
String 3 : D180728 (Date in YYMMDD format)
String 4 : 132714 (Timestamp in HHMMSS format)
String 5 : ACCEPT (Occurs between "_")
String 6 : EC (Occurs between "_")
String 7 : NC (Occurs between "_")

我是python的新手,希望能对此有所帮助。

谢谢。

5 个答案:

答案 0 :(得分:2)

使用re模块:

import re
a = 'V51M229D180728T132714_ACCEPT_EC_NCM'
re.search('(\w+)(M\w+)(D\d+)(T\d+)_(\w+)_(\w+)_(\w+)', a).groups()

您将获得:

('V51', 'M229', 'D180728', 'T132714', 'ACCEPT', 'EC', 'NCM')

答案 1 :(得分:0)

您可能想将正则表达式与匹配的组一起使用。请参阅re模块。

例如,

>>> mystr = 'V51M229D180728T132714_ACCEPT_EC_NC'
>>> re.match('(.*?)(M.*?)(D.*?)T(.*?)_(.*?)_(.*?)_(.*?)', mystr).groups()
('V51', 'M229', 'D180728', '132714', 'ACCEPT', 'EC', 'NC')

在模式中,()表示一个组,.*?将匹配最小数量的字符以使模式合适。

答案 2 :(得分:0)

使用split()。来自文档:

  

str.split(sep = None,maxsplit = -1)

     

返回单词列表   字符串,使用sep作为分隔符字符串。如果给出了maxsplit,则位于   大多数maxsplit拆分已完成(因此,列表最多包含   maxsplit + 1个元素)。如果未指定maxsplit或-1,则存在   分割数没有限制(已进行所有可能的分割)。

因此,您可以使用split('M',1)来获取['V51','229D180728T132714_ACCEPT_EC_NC']的列表,然后使用'D'分隔符拆分列表的第二项以获取['229“, '180728T132714_ACCEPT_EC_NC'] ...

希望您能明白。

答案 3 :(得分:0)

正如mxmt所说,请使用正则表达式。这是另一个等效的正则表达式,可能更容易阅读:

import re

s = 'V51M229D180728T132714_ACCEPT_EC_NC'

pattern = re.compile(r'''
    ^        # beginning of string
    (V\w+)   # first pattern, starting with V
    (M\w+)   # second pattern, starting with M
    (D\d{6}) # third string pattern, six digits starting with D
    T(\d{6}) # time, six digits after T
    _(\w+)
    _(\w+)
    _(\w+)   # final three patterns
    $        # end of string
    ''', re.VERBOSE
)

re.match(pattern, s).groups() -> ('V51', 'M229', 'D180728', '132714', 'ACCEPT', 'EC', 'NC')

答案 4 :(得分:0)

如果您的数据属于固定模式,则只需进行切片和列表切片即可。

  aa = "V51M229D180728T132714_ACCEPT_EC_NC"                                          
  a = aa.split("_")                                                                 
  str1 = a[0][0:3]                                                                  
  str2 = a[0][3:6]                                                                  
  str3 = a[0][7:14]                                                                 
  str4 = a[0][15:21]                                                                
  str5 = a[1]                                                                       
  str6 = a[2]                                                                     
  str7 = a[3]                                
  print(str1,str2,str3,str4,str5,str6,str7)

输出

V51 M22 D180728 132714接受EC NC