假设我的列表如下:
x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']
如何使用该''.join()
功能忽略换行符并获取'abcd'
?
''.join(c for c in x if c != '\n')
你可以做:
''.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'
>>>
你可以用过滤器做到这一点
''.join(filter(lambda a: a != '\n', x))
或者
''.join(filter(lambda a: a.isalpha(), x))
有时简单不仅简单,而且速度更快
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
''.join([x.strip() for x in ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']])