有没有办法在不丢失单词或字符的情况下使用拆分功能,用于拆分?
例如:
import re
x = '''\
1.
abcde.
2.
fgh 2.5 ijk.
3.
lmnop
'''
print(x)
listByNum = re.split(r'\d\.\D', x)
print(listByNum)
另一个例子:
import re
x = '''\
I love stackoverflow. I love food.\nblah blah blah.
'''
print(x)
listBySentences = re.split(r'\.', x)
print(listBySentences)
答案 0 :(得分:2)
没有很好的文档记录,但您可以在问题表达式周围使用括号:
import re
x = '''\
1.
abcde.
2.
fgh 2.5 ijk.
3.
lmnop
'''
print(x)
listByNum = re.split(r'(\d\.\D)', x)
print(listByNum)
# ['', '1.\n', 'abcde.\n', '2.\n', 'fgh 2.5 ijk.\n', '3.\n', 'lmnop\n ']
<小时/> 要在之后清理您的数据,您可以使用列表推导,如下所示:
listByNum = [num.strip() for num in re.split(r'(\d\.\D)', x) if num]
# ['1.', 'abcde.', '2.', 'fgh 2.5 ijk.', '3.', 'lmnop']
<小时/> 要保持分割元素中的数字,可以使用支持拆分空字符串的较新regex模块:
import regex as re
x = same string as above
listByNum = [num.strip() for num in re.split(r'(?V1)(?=\d\.\D)', x) if num]
# ['1.\nabcde.', '2.\nfgh 2.5 ijk.', '3.\nlmnop']