如何在python中通过保持sep

2024-04-25 08:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,在保留“(”:

s = ' playsound3Dwhenpossible(soundspotpoint18, %$videos_sounds_path%/sounds/lavazza_-_auguri_cherubini__15_.mp3, true, false, -52.644483, 0.947368, 90, 1, spotpoint18);'
x = s.split("(")
print(x)

我还尝试了:

x = s.split("?=(")

但没有起作用。你知道吗

谢谢


Tags: falsetruemp3videossplitprintsoundsauguri
3条回答

如果要在输出数组中保留分隔符“(”,最简单的方法是使用regex split。你知道吗

import re
s = ' playsound3Dwhenpossible(soundspotpoint18, %$videos_sounds_path%/sounds/lavazza_-_auguri_cherubini__15_.mp3, true, false, -52.644483, 0.947368, 90, 1, spotpoint18);'
x = re.split(r'(\()', s)

如果只需要保留分隔符,可以在拆分后重新引入:

def split_keep_separator(source, sep):
    elements = source.split(sep)
    return [e for t in zip(elements, [sep] * (len(elements))) for e in t][:-1]

为了测试它:

s = ' playsound3Dwhenpossible(soundspotpoint18, %$videos_sounds_path%/sounds/lavazza_-_auguri_cherubini__15_.mp3, true, false, -52.644483, 0.947368, 90, 1, spotpoint18);'

x = split_keep_separator(s, "(")
print(x)

# [' playsound3Dwhenpossible',
#  '(',
#  'soundspotpoint18, %$videos_sounds_path%/sounds/lavazza_-_auguri_cherubini__15_.mp3, true, false, -52.644483, 0.947368, 90, 1, spotpoint18);']

根据您的输入字符串,您的预期输出可能是

[' playsound3Dwhenpossible', '(soundspotpoint18, %$videos_sounds_path%/sounds/lavazza_-_auguri_cherubini__15_.mp3, true, false, -52.644483, 0.947368, 90, 1, spotpoint18);']

如果是这样,我觉得这很简单

s = ' playsound3Dwhenpossible(soundspotpoint18, %$videos_sounds_path%/sounds/lavazza_-_auguri_cherubini__15_.mp3, true, false, -52.644483, 0.947368, 90, 1, spotpoint18);'
print s.replace("(","*(").split('*')

先替换,然后拆分。你知道吗

除了'*',您可以使用原始字符串中而不是的任何内容。你知道吗

相关问题 更多 >