2017-02-17 3 views
0

アップロードスクリプトの統計データを取得するファイルがあります。これは私が得るものです。Pythonで壊れたデータを削除する方法

0K .......... .......... .......... .......... .......... 4% 72.83 KiB/s 
    470K .......... .......... .......... .......... .......... 9% 84.67 KiB/s 
1088K .......... .......... .......... .......... .......... 15% 91.78 KiB/s 
1708K .......... .......... .......... .......... .......... 20% 90.17 KiB/s 
    1250K .......... .......... .... 5% 85.29 KiB/s 
    6150K ......... 10% 64.32 KiB/s 
    8350K .......... .......... ........... .......... ..... 15% 55.12 KiB/s 
...==> STOR test10.zip ... .... 20% 59.38 KiB/s 
    0K ................. .......... ... ............. ............. ............ 25% 66.21 KiB/s 
2845K ...... .......... ........... .............. . ................... ... 4% 32.62 KiB/s 
    464K ................ ... .................. 29% 59.62 KiB/s 
3371K .. ................ ....... ...... ................ ....... ........... ...... 8% 38.75 KiB/s 
    963K ............ ................ .... 34% 51.58 KiB/s 
2253K .......... .......... .......... .......... .......... 24% 99.92 KiB/s 
2787K .......... .......... .......... .......... .......... 29% 92.12 KiB/s 
3291K .......... .......... .......... .......... .......... 33% 84.42 KiB/s 
3821K .......... .......... .......... .......... .......... 38% 75.88 KiB/s 
4342K .......... .......... .......... .......... .......... 43% 73.12 KiB/s 

インターネットの問題が原因でデータが壊れているものがあります。 だから私がしたいことは、これらの壊れたデータを削除することであり、それは次のようになります。

0K .......... .......... .......... .......... .......... 4% 72.83 KiB/s 
    470K .......... .......... .......... .......... .......... 9% 84.67 KiB/s 
1088K .......... .......... .......... .......... .......... 15% 91.78 KiB/s 
1708K .......... .......... .......... .......... .......... 20% 90.17 KiB/s 
2253K .......... .......... .......... .......... .......... 24% 99.92 KiB/s 
2787K .......... .......... .......... .......... .......... 29% 92.12 KiB/s 
3291K .......... .......... .......... .......... .......... 33% 84.42 KiB/s 
3821K .......... .......... .......... .......... .......... 38% 75.88 KiB/s 
4342K .......... .......... .......... .......... .......... 43% 73.12 KiB/s 

注:すべての時間、データは、上記の例と同じです。これを行うには

+2

有効な各データ項目はある特定のパターンに従います。そのパターンを正規表現として定義します。受信したデータを読み込み、各行をパターンと照合します。一致しないものはすべて破棄します。一致するものはすべて保持してください。最後に保持されたデータを統合して、フィルタリングされた破損していないデータを取得します。 – Sharad

+0

@AndrewGuyこんにちは、私は、正規表現を使用してPythonでそのデータを抽出し、私はその問題を解決する方法を見つけようとしていますが、解決するのは難しいです。 –

+0

@Sharadこんにちは、私はあなたのポイントを得ています。それをコード化する方法は私には分かりません。だから私のアイデアが間違っているかどうか、パターンを変数に保存する必要があるかどうか教えてください。 –

答えて

0

一つの方法:

$ cat foo.py 
data = ''' 
    0K .......... .......... .......... .......... .......... 4% 72.83 KiB/s 
    470K .......... .......... .......... .......... .......... 9% 84.67 KiB/s 
1088K .......... .......... .......... .......... .......... 15% 91.78 KiB/s 
1708K .......... .......... .......... .......... .......... 20% 90.17 KiB/s 
    1250K .......... .......... .... 5% 85.29 KiB/s 
    6150K ......... 10% 64.32 KiB/s 
    8350K .......... .......... ........... .......... ..... 15% 55.12 KiB/s 
...==> STOR test10.zip ... .... 20% 59.38 KiB/s 
    0K ................. .......... ... ............. ............. ............ 25% 66.21 KiB/s 
2845K ...... .......... ........... .............. . ................... ... 4% 32.62 KiB/s 
    464K ................ ... .................. 29% 59.62 KiB/s 
3371K .. ................ ....... ...... ................ ....... ........... ...... 8% 38.75 KiB/s 
    963K ............ ................ .... 34% 51.58 KiB/s 
2253K .......... .......... .......... .......... .......... 24% 99.92 KiB/s 
2787K .......... .......... .......... .......... .......... 29% 92.12 KiB/s 
3291K .......... .......... .......... .......... .......... 33% 84.42 KiB/s 
3821K .......... .......... .......... .......... .......... 38% 75.88 KiB/s 
4342K .......... .......... .......... .......... .......... 43% 73.12 KiB/s 
''' 

import re 
pattern = r".*\d+K\s+(\.{10}\s){5}\s*\d+%\s+\d+\.\d+\s+KiB\/s.*" 

for line in data.split('\n'): 
    if re.match(pattern, line) is not None: 
     print(line) 
$ 

実行結果:

$ python foo.py 
    0K .......... .......... .......... .......... .......... 4% 72.83 KiB/s 
    470K .......... .......... .......... .......... .......... 9% 84.67 KiB/s 
1088K .......... .......... .......... .......... .......... 15% 91.78 KiB/s 
1708K .......... .......... .......... .......... .......... 20% 90.17 KiB/s 
2253K .......... .......... .......... .......... .......... 24% 99.92 KiB/s 
2787K .......... .......... .......... .......... .......... 29% 92.12 KiB/s 
3291K .......... .......... .......... .......... .......... 33% 84.42 KiB/s 
3821K .......... .......... .......... .......... .......... 38% 75.88 KiB/s 
4342K .......... .......... .......... .......... .......... 43% 73.12 KiB/s 
$ 
関連する問題