如何拆分非常大的字符串和没有空格的字符串?(python3)

时间:2018-02-01 14:25:20

标签: python string python-3.x python-2.x

首先我有这个长字符串

array (
        0 => 'this is my first NEW interest', 
        1 => 'this is my second NEW inetrest',
        ....
        n => 'this is my n NEW interest'
  );

如何将输出作为

s = '1MichaelAngelo'

和列表

new_s = '1 Michael Angelo' 

注意:我有一千个我从html中解析过的。

其次,我有这个巨大的字符串(由名称和数字组成,最多1000个)。 E.g

new_list = [1,'Michael', 'Angelo']

其中1\nfirstName\nlastName\n.......999\nfirstName\nlastName 表示换行符。

如何从中提取数据以输出如下内容:

\n

等等。

1 个答案:

答案 0 :(得分:2)

两个问题,两个答案。下次请一次提出一个问题。

import re
s = '1MichaelAngelo'
[int(x) for x in re.findall(r'\d+',s)] + re.findall('[A-Z][^A-Z]*',s)
>>> [1, 'Michael', 'Angelo']

或者,

import re
s = '1MichaelAngelo'
[int(x) if re.match(r'\d+',x) else x for x in re.findall(r'\d+|[A-Z][^A-Z]*',s)]

其中re.findall在所需边界上拆分较长的字符串;

import re
s = '1\nfirstName\nlastName\n999\nfirstName2\nlastName2'
[[int(x) if re.match(r'\d+',x) else x for x in s.split('\n')[i:i+3]] for i in range(0,len(s.split('\n')),3)]
>>> [[1, 'firstName', 'lastName'], [999, 'firstName2', 'lastName2']]

其中列表推导首先将整个字符串拆分为三个(使用https://stackoverflow.com/a/15890829/2564301中显示的技巧),然后扫描新形成的列表中的整数并仅转换它们。