假设,我想将下面的列表拆分为单个字符。你知道吗
mylist = [('dog', 'camel'), ('horse'), ('List_of_people_saved_by_Oskar'), 'mouse_bear', 'lion tiger rabbit', 'ant']
这就是我迄今为止所尝试的:
L1 = [animal for word in mylist for animal in word.split('_')]
print(L1)
输出应如下所示:
`['dog', 'camel', 'horse', 'List', 'of', 'people', 'saved', 'by', 'Oskar', 'mouse', 'bear', 'lion', 'tiger' 'rabbit', 'ant']`
但我得到一个错误:
AttributeError: 'tuple' object has no attribute 'split'
您可以使用
re.findall(r'[^_ ]+', word)
来拆分下划线或空格分隔的单词。还可以添加另一个理解层来展平可能的字符串元组:L1
将变成:你搞混了要去哪里。你知道吗
另外一个问题是
("horse")
不是元组;("horse",)
是元组。因此,("horse")
仅仅是括号中的"horse"
,并且for animal in word
将枚举"horse"
中的单个字母,而不是返回一个"horse"
动物。你知道吗如果要按
_
以外的字符拆分,可以使用re.split
和字符类:如果您真的打算让非配对动物而不是成为元组,那么您必须特别处理这些情况:
好吧,这里有一个更可读的代码,因为我真的不喜欢有一个内联代码的想法,不管它有多高效或更快。另外,您可能更容易理解,而且不需要库导入。你知道吗
代码:
输出:
相关问题 更多 >
编程相关推荐