假设我的列表为:
x = ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']
如何使用''.join()
函数忽略换行符并获取'abcd'
?
答案 0 :(得分:6)
''.join(c for c in x if c != '\n')
答案 1 :(得分: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'
>>>
答案 2 :(得分:1)
您可以使用过滤器
''.join(filter(lambda a: a != '\n', x))
或
''.join(filter(lambda a: a.isalpha(), x))
答案 3 :(得分:0)
''.join([x.strip() for x in ['a', '\n', 'b', '\n', 'c', '\n', '\n', 'd']])
答案 4 :(得分: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