使用Python的换行符分隔符拆分字符串

Har*_*ran 80 python string python-2.7

我需要分隔包含新行的字符串.我怎么做到这一点?请参考以下代码.

输入:

data = """a,b,c
d,e,f
g,h,i
j,k,l"""
Run Code Online (Sandbox Code Playgroud)

所需输出:

['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

1. output = data.split('\n')
2. output = data.split('/n')
3. output = data.rstrip().split('\n')
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 155

str.splitlines 方法应该给你这个.

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
Run Code Online (Sandbox Code Playgroud)

  • 关于`str.splitlines`的一个方便的部分是,如果它存在,它将删除最后的`\n`.即,''foo \nbar \n'.split()== ['foo','bar','']`而`str.splitlines('foo \nbar \n')== ['foo', '酒吧']` (4认同)

Kir*_*aLT 10

如果您只想按换行分割,最好使用splitlines():

例:

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data
'a,b,c\nd,e,f\ng,h,i\nj,k,l'
>>> data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
Run Code Online (Sandbox Code Playgroud)

使用split()它也有效:

>>> data = """a,b,c
... d,e,f
... g,h,i
... j,k,l"""
>>> data
'a,b,c\nd,e,f\ng,h,i\nj,k,l'
>>> data.split()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
Run Code Online (Sandbox Code Playgroud)

然而:

>>> data = """
... a, eqw, qwe
... v, ewr, err
... """
>>> data
'\na, eqw, qwe\nv, ewr, err\n'
>>> data.split()
['a,', 'eqw,', 'qwe', 'v,', 'ewr,', 'err']
Run Code Online (Sandbox Code Playgroud)

  • 您不必像`data.split('\n')`那样传递要拆分的字符,这似乎很奇怪? (2认同)

the*_*eye 9

data = """a,b,c
d,e,f
g,h,i
j,k,l"""

print(data.split())       # ['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
Run Code Online (Sandbox Code Playgroud)

str.split默认情况下,按所有空白字符拆分.如果实际字符串具有任何其他空白字符,则可能需要使用

print(data.split("\n"))   # ['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
Run Code Online (Sandbox Code Playgroud)

或者正如@Ashwini Chaudhary在评论中建议的那样,你可以使用

print(data.splitlines())
Run Code Online (Sandbox Code Playgroud)

  • 它也适用于`\ r \n`和其他类型的线边界. (4认同)

paj*_*ton 7

有一种专门用于此目的的方法:

data.splitlines()
['a,b,c', 'd,e,f', 'g,h,i', 'j,k,l']
Run Code Online (Sandbox Code Playgroud)