Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用split-from-regex并保留split-word?_Python_Regex_String_Split - Fatal编程技术网

如何在python中使用split-from-regex并保留split-word?

如何在python中使用split-from-regex并保留split-word?,python,regex,string,split,Python,Regex,String,Split,有没有一种方法可以在不丢失用于拆分的单词或字符的情况下使用拆分函数 例如: 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(

有没有一种方法可以在不丢失用于拆分的单词或字符的情况下使用拆分函数

例如:

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)
我想保留列表中的数字

另一个例子:

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)

没有很好的文档记录,但是可以在有问题的表达式周围使用括号:

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']

要将数字保留在拆分的元素中,可以使用支持空字符串拆分的较新模块:

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']

没有很好的文档记录,但可以在相关表达式周围使用括号:

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']

要将数字保留在拆分的元素中,可以使用支持空字符串拆分的较新模块:

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']

(?=\d\.\d)|(?@sln:请注意,您不能在python的
re
模块中对空字符串进行拆分-您需要使用
regex
。@Jan-
请注意,您不能对空字符串进行拆分
您能给我一个示例,说明这与我的注释有什么关系吗?
(?=\d\.\d)|(?@sln:注意,在python的
re
模块中,您不能在空字符串上拆分-您需要使用
regex
。@Jan-
注意,您不能在空字符串上拆分
您能给我一个例子说明这与我的注释有什么关系吗?数字在单独的元素中,我能把它们放在一起吗['1.abcde.'、'2.fgh 2.5 ijk.'、'3.lmnop']
数字在单独的元素中,我可以把它们放在一起吗。
.['1.abcde.'、'2.fgh 2.5 ijk.'、'3.lmnop']