Python按空格分割字符串并剥离换行符

时间:2014-08-11 22:00:13

标签: python string split

我在python中有一个字符串,如下所示:

d4 c3 b2 a1 02 00 04 00  00 00 00 00 00 00 00 00 
ff ff 00 00 01 00 00 00  00 00 00 00 00 00 00 00 
36 00 00 00 36 00 00 00  00 1c 23 10 f8 f1 00 1b 
17 01 10 20 08 00 45 00  00 28 df 27 40 00 80 06 
2b 87 c7 08 1a 0a 0a 05  05 0a 5c ea 5c ea c2 1f 

我跳过了很多行。我想把每个数字放在一个列表中。当我使用.split()时,它会返回一个不仅仅是数字的列表,还会返回空格和' \ n' s,因为矩阵中间有两个空格,而且&# 39;每行末尾的换行符号。所以我得到了:

['d4', 'c3', 'b2', 'a1', '02', '00', '04', '00', '', '00', …, '\nff', 'ff', '00'…]

我只是希望数字在列表中,而不是其他任何东西,任何人都知道如何做到这一点?感谢您提前的时间。

3 个答案:

答案 0 :(得分:16)

如果您使用.split(" "),那么您的程序将在每个空格上分割,而不是在任何其他空格上。如果您使用.split(),程序将考虑多个空格,换行符,制表符和所有其他形式的空格。这应该可以帮到你找到你想要的东西。

>>> teststr = "a   v w   ef sdv   \n   wef"
>>> print teststr
a   v w   ef sdv   
   wef
>>> teststr.split()
['a', 'v', 'w', 'ef', 'sdv', 'wef']
>>> teststr.split(" ")
['a', '', '', 'v', 'w', '', '', 'ef', 'sdv', '', '', '\n', '', '', 'wef']

答案 1 :(得分:1)

python string文档包含大量可以对字符串执行的操作。

奇怪的是.split()并没有消除你所有的空白,正如TheSoundDefense上面提到的那样。

要删除换行符,请尝试使用.replace(<target>,<replacement>)方法,如下所示:

a = '11 11 11 11  11 11 11 11 \n22 22 22 22  22 22 22 22 \n'
b = a.replace('\n',' ')
c = b.split()
print c
>>> ['11', '11', '11', '11', '11', '11', '11', '11', '22', '22', '22', '22', '22', '22', '22', '22']

答案 2 :(得分:1)

使用不带任何参数的split()将拆分任何空格上的内容,并将几个空格组合在一起。

以下是一个例子:

s = """d4 c3 b2 a1 02 00 04 00  00 00 00 00 00 00 00 00 
ff ff 00 00 01 00 00 00  00 00 00 00 00 00 00 00 
36 00 00 00 36 00 00 00  00 1c 23 10 f8 f1 00 1b 
17 01 10 20 08 00 45 00  00 28 df 27 40 00 80 06 
2b 87 c7 08 1a 0a 0a 05  05 0a 5c ea 5c ea c2 1f"""

data = s.split()

在这种情况下,data将如下所示:

['d4', 'c3', 'b2', 'a1', '02', '00', '04', '00', '00', '00', '00', '00', '00', '00', '00', '00', 'ff', 'ff', '00', '00', '01', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', '36', '00', '00', '00', '36', '00', '00', '00', '00', '1c', '23', '10', 'f8', 'f1', '00', '1b', '17', '01', '10', '20', '08', '00', '45', '00', '00', '28', 'df', '27', '40', '00', '80', '06', '2b', '87', 'c7', '08', '1a', '0a', '0a', '05', '05', '0a', '5c', 'ea', '5c', 'ea', 'c2', '1f']