与字符串分开的数字

时间:2019-08-08 04:52:45

标签: python

字符串中的单独数字,但是当连续的'1'时,将它们分开

我认为必须有一个聪明的方法来解决这个问题。

s = 'NNNN1234N11N1N123'

预期结果是:

['1234','1','1','1','123']

2 个答案:

答案 0 :(得分:2)

我认为您可以通过使用stream { upstream syslog_standard { zone syslog_zone 64k; server cp01.woolford.io:1514 max_fails=1 fail_timeout=10s; server cp02.woolford.io:1514 max_fails=1 fail_timeout=10s; server cp03.woolford.io:1514 max_fails=1 fail_timeout=10s; } match syslog_ingest_test { send "GET /connectors/syslog/status HTTP/1.0\r\nHost: localhost\r\n\r\n"; expect ~* "RUNNING"; } server { listen 514 udp; proxy_pass syslog_standard; proxy_bind $remote_addr transparent; health_check match=syslog_ingest_test port=8073; } } 模块来解决

match=syslog_ingest_test

编辑:如@CrafterKolyan的注释中所建议,可以将正则表达式简化为re

输出

>>> import re
>>> re.findall('(?:1[2-90]+)|1', 'NNNN1234N11N1N123')

答案 1 :(得分:0)

我也将使用正则表达式(t'模块),但使用以下其他功能,即re

re.split

说明:您想将import re s = 'NNNN1234N11N1N123' output = re.split(r'[^\d]+|(?<=1)(?=1)',s) print(output) # ['', '1234', '1', '1', '1', '123'] output = [i for i in output if i] # jettison empty strs print(output) # ['1234', '1', '1', '1', '123'] 拆分成str的{​​{1}}-这就是使用list的目的。 str的第一个参数用于告诉应该在哪里进行分割,如果不使用捕获组,则将匹配的所有内容都删除(类似于re.split方法re.split),因此我需要指定发生切割的两个位置,因此我使用了str作为替代,并通知split进行切割:

  • |是1个或多个非数字
  • re.split为空[^\d]+,其后是(?<=1)(?=1),后跟str,这里我使用了名为零长度断言(两次)的功能

请注意,1在您想要的输出之前产生了1(空re.split),这意味着第一次切割(在这种情况下为'')从{{ 1}}。这是str的预期行为,尽管在这种情况下我们不需要该信息,因此我们可以抛弃我使用NNNN理解的任何空str