1

假设我的列表如下:

x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']

如何使用该''.join()功能忽略换行符并获取'abcd'

4

5 回答 5

6
''.join(c for c in x if c != '\n')
于 2013-05-22T21:04:29.123 回答
3

你可以做:

''.join(c for c in x if c.isalpha())

这样,您可以删除\n\t以及任何其他特殊字符

>>> x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']
>>> ''.join(c for c in x if c.isalpha())
'abcd'
>>> 
于 2013-05-22T21:06:54.977 回答
1

你可以用过滤器做到这一点

''.join(filter(lambda a: a != '\n', x))

或者

''.join(filter(lambda a: a.isalpha(), x))
于 2013-05-22T21:18:34.350 回答
0

有时简单不仅简单,而且速度更快

x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']
''.join(x).replace('\n', '')

对于非常长的列表,这似乎要快一些

''.join(x).translate(None, '\n')

这里有一些时间。

$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(c for c in x if c!='\n')"
100000 loops, best of 3: 1.9 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(c for c in x if c.isalpha())"
100000 loops, best of 3: 2.29 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(filter(lambda a: a != '\n', x))"
1000000 loops, best of 3: 1.9 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(x).replace('\n','')"
1000000 loops, best of 3: 0.593 usec per loop
$ python -m timeit -s"x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']" "''.join(x).replace('\n','')"
1000000 loops, best of 3: 0.596 usec per loop
于 2013-05-22T22:02:27.307 回答
0
''.join([x.strip() for x in ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']])
于 2013-05-22T21:27:53.987 回答