gpt4 book ai didi

python - 我想在第一次出现时用一个字符拆分一个字符串,该字符属于一个字符列表。如何在 python 中执行此操作?

转载 作者:行者123 更新时间:2023-11-28 22:24:56 25 4
gpt4 key购买 nike

基本上,我有一个特殊字符列表。如果它属于这个列表并且存在于字符串中,我需要用一个字符拆分一个字符串。类似以下内容:

def find_char(string):

if string.find("some_char"):
#do xyz with some_char
elif string.find("another_char"):
#do xyz with another_char
else:
return False

等等。我想这样做的方式是:

def find_char_split(string):
char_list = [",","*",";","/"]
for my_char in char_list:
if string.find(my_char) != -1:
my_strings = string.split(my_char)
break
else:
my_strings = False

return my_strings

是否有更 pythonic 的方式来做到这一点?或者上面的程序就可以了?请帮忙,我不是很精通python。

(编辑):我希望它在字符第一次出现时拆分,这是最先遇到的。也就是说,如果字符串包含多个逗号和多个星号,那么我希望它按第一次出现的逗号拆分。请注意,如果星星先出现,那么它将被星星打破。

最佳答案

我更喜欢为此使用 re 模块,因为拆分多个任意字符的表达式非常简单:

r'[,*;/]'

方括号创建了一个匹配其中任何内容的字符类。代码是这样的:

import re

results = re.split(r'[,*;/]', my_string, maxsplit=1)

maxsplit 参数使得分割只发生一次。

如果您多次执行相同的拆分,您可以编译正则表达式并更快地搜索相同的表达式(但请参阅 Jon Clements' comment below):

c = re.compile(r'[,*;/]')
results = c.split(my_string)

如果这种加速很重要(可能不重要),您可以在函数中使用编译版本,而不是每次都重新编译。然后创建一个单独的函数来存储实际编译的表达式:

def split_chars(chars, maxsplit=0, flags=0, string=None):
# see note about the + symbol below
c = re.compile('[{}]+'.format(''.join(chars)), flags=flags)
def f(string, maxsplit=maxsplit):
return c.split(string, maxsplit=maxsplit)
return f if string is None else f(string)

然后:

special_split = split_chars(',*;/', maxsplit=1)
result = special_split(my_string)

还有:

result = split_chars(',*;/', my_string, maxsplit=1)

+ 字符的目的是在需要时将多个定界符视为一个定界符(感谢 Jon Clements)。如果不需要,您可以只使用上面的 re.compile('[{}]'.format(''.join(chars)))。请注意,对于 maxsplit=1,这不会有任何影响。

最后:看看this talk快速介绍 Python 中的正则表达式,以及 this one了解更多信息。

关于python - 我想在第一次出现时用一个字符拆分一个字符串,该字符属于一个字符列表。如何在 python 中执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com