2017-10-07 9 views
1

私はリストに抽出する必要があるデータを含む.txtファイルを持っています。Python - テキストファイル全体を分割する

Sfc. W.Dir  -  -  242  240  237  241  246  248  246  249  253  254  257  266  262  269  284  283  283  290  291  295  292  287  290  293  291 Sfc. W.Dir 

ファイル全体looks like this: 典型的な行は次のようになります。

これを数字だけのテキストファイルに分割する方法を教えてください。つまり、例の行は242 240 237 241などになります。最初の数行にはデータが含まれていないので、8行から23行までしか必要としません。

+0

それは解析するためにたくさんあります。何を試しましたか? – pstatix

+0

少なくとも、いくつかの結果行を投稿する(どのように見えるか)コードを書くことができない場合 - 期待される結果を手作業で書く – RomanPerekhrest

答えて

1
value_lists = [] 

file_ = <put name here> 
start_line = <line start> 
end_line = <line end> 

with open(file_) as data: 
    for i, v in enumerate(data.readlines()): 
     if start_line <= i <= end_line: 
      value_lists += [[]] 
      for val in v.split(): 
       try: 
        value_lists[i-start_line].append(float(val)) 
       except ValueError: 
        pass 

はそう:あなただけの更なる使用のためのテキスト処理の一部としてこれを行いたい場合は

fp = open("file") 
for i, line in enumerate(fp): 
    if i>=8 and i<=23: 
     print [int(s) for s in line.split() if s.isdigit()] 
fp.close() 

その後、私はあなたがawkまたはsedのようなファイル処理ツールを使用することをお勧めしますあなたのデータセット上でコードを実行した後に正しい結果を返すこと。 n '番目のインデックスは、ファイルとの相対性を持ち、一覧のn-7番目のインデックスと同じです。

注:Pythonの2.7.14とPython 3.6.2でテストは、同じ結果に

注意を返します:コードは、余分なリストを返す場合、&終了変数を開始ラインから1を削除してください。通常それを修正する必要があります

+0

これをファイルに書き込むためのビットが追加され、うまく動作する! – Harry

2

これは問題ありません。

$ awk 'FNR>=8 && FNR<=23 {gsub(/[^0-9 ]/,""); $1=$1; print $0}' file 

0 0 0 0 30 82 116 195 217 231 241 248 251 249 244 234 220 200 171 129 31 0 0 0 0 
1773 1806 1801 1795 558 1147 1258 1589 1711 1747 1796 1839 1865 1872 1863 1828 1780 1709 1582 1413 1023 1831 1507 1327 1199 
356 356 356 356 356 356 356 356 356 699 820 887 915 907 866 760 356 356 356 356 356 356 356 356 356 
175 356 356 356 356 356 356 356 815 987 1060 1121 1166 1188 1187 1166 1113 1030 891 356 356 356 356 356 356 356 175 
99900 99900 99900 3486 4258 2745 4503 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 99900 99900 
2 1436 1428 1416 1414 1427 1454 1488 1583 1625 1652 1679 1699 1715 1725 1724 1719 1708 1685 1660 1629 1585 1491 1369 1326 1299 2 
2 1397 1394 1379 1358 1346 1338 1315 1296 1266 1249 1234 1218 1203 1193 1187 1186 1190 1199 1206 1211 1223 1238 1232 1226 1219 2 
10207 10207 10209 10209 10209 10210 10210 10210 10209 10209 10209 10209 10208 10205 10202 10200 10198 10196 10194 10193 10193 10192 10192 10191 10192 
198 200 201 203 202 201 199 197 197 196 196 195 195 194 193 193 193 193 193 192 191 187 184 184 183 
13 13 13 13 12 13 13 14 14 14 14 14 15 15 15 15 15 14 14 14 12 11 12 12 11 
19 19 19 19 12 15 15 15 16 16 16 16 16 16 16 16 16 16 16 15 14 17 17 16 16 
206 207 208 209 202 202 200 199 200 199 199 199 198 198 198 197 197 197 196 196 194 202 200 199 199 
2 2 2 2 2 3 2 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 
1249 1303 1287 1199 134 317 204 95 67 209 327 433 536 611 648 671 659 615 622 670 864 322 437 448 430 
1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 1 
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 
関連する問題