首先我有这个长字符串
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
等等。
答案 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中显示的技巧),然后扫描新形成的列表中的整数并仅转换它们。