首页 > 解决方案 > 将字符串的特定部分用于数组 [python]

问题描述

我有一个字符串的文本列表:

3814-F76A-2451 -54 -59.1 61 4.03051 -0.0595874 2 月 27 日 13:33:23.044623
3014-F56A-2454 -73 -60 -63 127 4.40527 0.828709 2 月 27 日 13:332:
01.6926 -51 -53.4 13 4.36092 -0.895371 2 月 27 日 13:34:26.504497

我想从这些子字符串(十六进制)中创建一个数组,第一个条目是3814F76A2451,第二个是3014F56A2454等等。

提前感谢您的时间!

标签: pythonarrayslistsubstring

解决方案


如果子字符串总是 14 个字符,您可以从每个字符串中获取它们

strings = ['3814-F76A-2451 -54 -59.1 61 4.03051 -0.0595874 Feb-27 13:33:23.044623',
           '3014-F56A-2454 -73 -60 -63 127 4.40527 0.828709 Feb-27 13:32:01.692607',
           '3414-F76A-2451 -65 -51 -53.4 13 4.36092 -0.895371 Feb-27 13:34:26.504497']

substrings = [s[:14].replace('-', '') for s in strings]

如果长度可以改变,用空格分割每个字符串并取第一个结果

substrings = [s.split(' ')[0].replace('-', '') for s in strings]

输出

# ['3814F76A2451', '3014F56A2454', '3414F76A2451']

编辑

如果字符串是长文本的一部分,要回答评论,您可以从中获取所有匹配xxxx-xxxx-xxxx格式的子字符串

text = '3814-F76A-2451 3814sF76A-2451 -54 -59.1 61 4.03051 -0.0595874 Feb-27 13:33:23.044623 3014-F56A-2454 -73 -60 -63 127 4.40527 0.828709 Feb-27 13:32:01.692607 3414-F76A-2451 -65 -51 -53.4 13 4.36092 -0.895371 Feb-27 13:34:26.504497'
strings = [t[:14].replace('-', '') for t in text.split(' ') if re.match('^[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}', t)]

推荐阅读