在以下示例中,在关键字SELECT DATE_FORMAT(FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(dt))) , '%Y-%m-%d')
FROM data;
,dolor sit
和elitr sed
处拆分了一个字符串。
我有什么选择来找出哪个关键字在给定位置导致了拆分(请参见预期的输出)?
something else
输出:
import re
example_input = 'Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy'
splitted_string = re.split('dolor sit|elitr sed|something else', example_input)
for (index, part) in enumerate(splitted_string, 1):
if index == len(splitted_string):
print (part.strip())
else:
print (part.strip(), '-', '???')
预期输出:
Lorem ipsum - ???
amet consetetur sadipscing - ???
diam nonumy
答案 0 :(得分:1)
实际上,这是使用正则表达式的好地方,通过一个操作,您将消耗字符串并执行简单的替换:
import re
string = '''
Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy
Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy
'''
print(re.sub(r'(dolor sit|elitr sed|something else)\s+', r'- \1\n', string))
它将输出:
Lorem ipsum - dolor sit
amet consetetur sadipscing - elitr sed
diam nonumy
Lorem ipsum - dolor sit
amet consetetur sadipscing - elitr sed
diam nonumy
答案 1 :(得分:1)
您可以通过将正则表达式放在括号中来捕获拆分定界符,例如:
re.split(r'(dolor sit|elitr sed|something else)', example_input)
这将返回拆分项列表,后跟定界符,如:
['Lorem ipsum ', 'dolor sit', ' amet consetetur sadipscing ', 'elitr sed', ' diam nonumy']
这样,您就可以循环访问并拉出分隔符。
import re
from itertools import zip_longest
example_input = 'Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy'
splits = re.split(r'(dolor sit|elitr sed|something else)', example_input)
for (part, delimiter)in zip_longest(splits[::2], splits[1::2]):
print(part.strip(), '-', delimiter)
这将打印:
Lorem ipsum-多洛尔(Dolor)坐在
amet consetetur sadipscing-elitr sed
diam nonumy-无
答案 2 :(得分:0)
import re
example_input = 'Lorem ipsum dolor sit amet consetetur sadipscing elitr sed diam nonumy'
splitted_string = re.split('dolor sit|elitr sed|something else', example_input)
for (index, part) in enumerate(splitted_string):
next_index = index + 1 if index + 1 < len(splitted_string) else index
next_part = example_input[example_input.find(part) +
len(part): example_input.find(splitted_string[next_index])]
output = ' - ' + next_part if next_part else ''
print(part.strip(), output)