数据清理存储在python列表中的字符串

时间:2018-06-02 17:06:15

标签: python string

我有一些测试数据被刮掉,并且在如何在效率方面正确地清理它方面很困难。

test_data = ['\r\n    \r\n        ',
                  '\r\n          ',
                  'Reine Baumwolle',
                  '\r\n        ',
                  '\r\n      \r\n        ',
                  '\r\n          ',
                  'Kontrastblende am Ausschnitt',
                  '\r\n        ',
                  '\r\n      \r\n        ',
                  '\r\n          ',
                  'Pflegeleicht',
                  '\r\n        ',
                  '\r\n      \r\n    ']

通过正则表达式到目前为止我可以清理我的数据:

import re
rep = ['\n','\t','\r']
for y in rep:
test_data = [r.replace(y, '') for r in test_data]

我的中期结果是这样的:

['            ', 
'          ',
'Reine Baumwolle',
'        ',
'              ',
'          ',
'Kontrastblende am Ausschnitt',
'        ',
'              ',
'          ',
'Pflegeleicht',
'        ',
'          ']

我如何扩展我的函数以清除所有不必要的空格和逗号,以便只获得一个字符串,如下所示:

预期结果:

test_data = 'Reine Baumwolle, Kontrastblende am Ausschnitt, Pflegeleicht'

,只是没有逗号分隔:

test_data = 'Reine Baumwolle Kontrastblende am Ausschnitt Pflegeleicht'

2 个答案:

答案 0 :(得分:0)

使用list comprehension.

<强>实施例

test_data = ['\r\n    \r\n        ', '\r\n          ', 'Reine Baumwolle', '\r\n        ','\r\n      \r\n        ','\r\n          ','Kontrastblende am Ausschnitt','\r\n        ','\r\n      \r\n        ','\r\n          ','Pflegeleicht','\r\n        ','\r\n      \r\n    ']
print( " ".join([i for i in test_data if i.strip()]) )
print( ", ".join([i for i in test_data if i.strip()]) )  #Comma Seperated.

<强>输出:

Reine Baumwolle Kontrastblende am Ausschnitt Pflegeleicht
Reine Baumwolle, Kontrastblende am Ausschnitt, Pflegeleicht
  • str.strip删除任何前导或尾随空格。

答案 1 :(得分:0)

看起来你只需要过滤掉从空格中删除后没有任何东西的字符串。

>>> ' '.join(s for s in test_data if s.strip())
'Reine Baumwolle Kontrastblende am Ausschnitt Pflegeleicht'