Python 将字符串拆分为固定数量的元素
我需要把一根绳子一分为二。如果字符串不包含分隔符,我需要第二个字符串为Python 将字符串拆分为固定数量的元素,python,string,list,Python,String,List,我需要把一根绳子一分为二。如果字符串不包含分隔符,我需要第二个字符串为None。下面的代码可以工作,但对于它所做的事情来说似乎太冗长了。有没有更优雅的方法 def splitter(item): elements = item.split('_') first = elements[0] if len(elements) == 1: elements.append(None) second = elements[1] return firs
None
。下面的代码可以工作,但对于它所做的事情来说似乎太冗长了。有没有更优雅的方法
def splitter(item):
elements = item.split('_')
first = elements[0]
if len(elements) == 1:
elements.append(None)
second = elements[1]
return first, second
mylist = ['do_this', 'do_that', 'do_somethingelse', 'stayput', 'sleep']
for item in mylist:
print(splitter(item))
# Output:
# ('do', 'this')
# ('do', 'that')
# ('do', 'somethingelse')
# ('stayput', None)
# ('sleep', None)
你的代码看起来不错
您可以这样做:
def splitter(item, delimiter):
if delimiter in item:
return tuple(item.split(delimiter))
else:
return (item, None)
mylist = ['do_this', 'do_that', 'do_somethingelse', 'stayput', 'sleep']
for item in mylist:
print(splitter(item, "_"))
顺便问一下,您是否100%确定您的字符串中只有一个“u”?您也可以试试
def分离器(项目):
零件=项目拆分(“”)
返回零件+[无]*(2-透镜(零件))
列表中的每个项目都有一个足够简单的一行:
mylist = ['do_this', 'do_that', 'do_somethingelse', 'stayput', 'sleep']
for item in mylist:
item_1, item_2 = item.split('_')[0], item.split('_')[1] if len(item.split('_')) != 1 else None
print(item_1, item_2)
#Output:
#do this
#do that
#do somethingelse
#stayput None
#sleep None
下面是整个列表的完整一行代码,它将每一对放入列表中的元组中:
newlist = [(item.split('_')[0], item.split('_')[1] if len(item.split('_')) != 1 else None) for item in mylist]
#Output:
#[('do', 'this'), ('do', 'that'), ('do', 'somethingelse'), ('stayput', None), ('sleep', None)]
修改这些内容应该很容易,因此输出的格式是您想要的(列表、元组等)。非常感谢。我本来希望这会是一个一行,但你的建议是短得多,好得多,无论如何。顺便说一句,是的,只有一个下划线。