我有一个用^ F个字符分隔的文本文件,我想删除定界符之间的多余空白。我也想删除前面的附加零。我的文件看起来像这样,
File1.txt
implementation 'com.google.android.gms:play-services-ads:12.0.0'
预期输出:
12345^F0007564 ^F ^F03^F ^F01-18-2019 03:12:00 ^FAbcder ^F
带有200k条记录的文件大小约为100mb。任何快速的方法来替换它,并使用python 2.6.6传递给数据模型?
答案 0 :(得分:2)
您可以在re.sub
中使用此正则表达式:
>>> text = '12345^F0007564 ^F ^F03^F ^F01-18-2019 03:12:00 ^FAbcder ^F'
>>> print re.sub(r' {2,}|(?<=F)0+(?!\d+-)', '', text)
12345^F7564^F^F3^F^F01-18-2019 03:12:00^FAbcder^F
RegEx详细信息:
{2,}
:匹配2个以上空格|
:或(?<=F)0+(?!\d+-)
:匹配前面有F
且后面不跟1+数字和连字符的1+个零(以避免与日期中的零匹配)答案 1 :(得分:1)
这在某些日期解决了前导0:
input = "12345^F0007564 ^F ^F03^F ^F01-18-2019 03:12:00 ^FAbcder ^F"
print(re.sub(r"(\^F)(0*(?!\d-))", '^F', input.replace(" ", "")))
输出:
12345^F7564^F^F3^F^F01-18-201903:12:00^FAbcder^F
编辑:
以上内容删除了日期中的空格。另一个答案是通过仅删除双精度空格或更多空格来解决此问题,但是假设您要删除除日期格式中的空格以外的所有空格,我实际上会将其分成两个re.sub
:
input = "12345^F0007564 ^F ^F03^F ^F01-18-2019 03:12:00 ^FAbcder ^F"
input = re.sub(r'(\^F)( )|( )\^F', '', input)
print(re.sub(r"(\^F)(0*(?!\d-))", '^F', input))
第一个re.sub
会删除^F
之前或之后的所有空格字符。显然,这比使用单个表达式的效率低,但是您的数据集并不大,应该引起关注。
答案 2 :(得分:0)