以下代码:
str = 'Welcome\nto\nPythonExamples\nWelcome\nto\nPythonExamples'
chunks = str.split('\n')
print(chunks)
正确打印出:
['Welcome', 'to', 'PythonExamples', 'Welcome', 'to', 'PythonExamples']
我想将字符串拆分为以'Welcome\n'开头的字符串,因此我尝试了以下方法:
str = 'Welcome\nto\nPythonExamples\nWelcome\nto\nPythonExamples'
chunks = str.split('Welcome\n')
print(chunks)
但是这个打印出来:
['', 'to\nPythonExamples\n', 'to\nPythonExamples']
注意第一个条目是如何为空的。 我如何正确地将其拆分,以便输出是正确的
['to\nPythonExamples\n', 'to\nPythonExamples']
一种非常干净的python方法是使用filter()和
None
。另一方面,str
是Python中的关键字,不应将其用作变量名如果我理解正确,您希望避免使用空字符串。 您可以使用列表理解,执行以下操作:
应该能解决你的问题。为什么?
首先,列表理解最后添加了
if x
,这意味着它将只在列表中包含truthy值(或者更确切地说,将忽略falsy值)但是为什么你一开始就得到了} 处向您指出会更容易:
''
?在source code for ^{基本上,split函数在
split(sep)
中查找下一次出现的sep
,并从上一次出现的maxcount
中派生一个子字符串到pos(它将执行maxcount
次)。由于您在pos 0中获得了Welcome\n
,并且“最后一次出现”为0,因此它将生成一个从0到0的子字符串,这将导致一个空字符串顺便说一句,对于这样的字符串,您也会得到空字符串:
代码的结果,无需我的更改:
您可以过滤掉空条目。还应避免使用
str
,因为它是一个内置函数。既然''
是假的,你甚至不需要比较相关问题 更多 >
编程相关推荐