2017-03-14 2 views
2

私はテキストファイルを持っており、データのフォーマットをGeoJsonフォーマットに変更したいと考えています。まず、それを別々のパーツに解析したいのです。私はPythonを使ってコードを作ることができませんでした。データを解析してGeoJson形式にしてください。初期データ形式は以下の通りです。データをGeoJsonに変換

.A DAQT2 170314 C DH124045 /HGIRS 479.7: 

.A DAMT2 170314 C DH115756 /HGIRS 425.1: 

.A DBQT2 170314 C DH123840 /HGIRS 436.6: 

.A DBDT2 170314 C DH120419 /HGIRS 472.3: 

.A DDDT2 170314 C DH120204 /HGIRS 400.6: 

.A DCNT2 170314 C DH120806 /HGIRS 412.9: 

.A DBUT2 170314 C DH124633 /HGIRS 404.1: 

.A DBBT2 170314 C DH121511 /HGIRS 453.4: 

.A DDNT2 170314 C DH123336 /HGIRS 0.2: 

.A DAXT2 170314 C DH123031 /HGIRS 438.1: 

次のコードを生成して、これまでデータを分離(解析)していましたが、データの行を返します。私は、出力を行ごとにしたい。あなたは "こんにちは/ Nこんにちは、誰かが/ n" は出力が続いて

['Hello','world/n','Hi','someone/n'] 

あなたの場合になります(」「)に分割した場合

['["[\':", \'1117\', \'AM\', \'CDT\', \'TUE\', \'MAR\', \'14\', 
"2017\\\\n\',", "\':\\\\n\',", "\':", \'HOURLY\', \'ACCUMULATOR\', 
\'INFORMATION\', "TABLE\\\\n\',", "\':\\\\n\',", "\':", \'NOTE:\', \'\', 
\'ERRONEOUS\', \'REPORTS\', \'MAY\', \'BE\', \'RECEIVED\', \'UNDER\', 
"CERTAIN\\\\n\',", "\':", \'\', \'\', \'\', \'\', \'\', \'\', \'\', 
\'WEATHER\', "CONDITIONS\\\\n\',", "\':\\\\n\',", "\':", 
"**********************************************************\\\\n\',", "\':", 
\'ID\', \'\', \'\', \'\', \'LOCATION\', \'\', \'\', \'\', \'\', \'\', \'\', 
\'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', 
\'ACCUMULATOR\', "VALUE\\\\n\',", "\':", 
"**********************************************************\\\\n\',", 
"\':CITY", \'OF\', \'DALLAS\', \'ALERT\', "SYSTEM\\\\n\',", "\'.A", 
\'DDFT2\', \'170314\', \'C\', \'DH103231\', \'/HGIRS\', "516.8:\\\\n\',", 
"\'.A", \'DCVT2\', \'170314\', \'C\', \'DH110026\', \'/HGIRS\', 
"536.0:\\\\n\',", "\'.A", \'DDJT2\', \'170314\', \'C\', \'DH102056\', 
\'/HGIRS\', "0.0:\\\\n\',", "\'.A", \'DDUT2\', \'170314\', \'C\', 
\'DH100503\', \'/HGIRS\', "3.6:\\\\n\',", "\'.A", \'DDUT2\', \'170314\', 
\'C\', \'DH100533\', \'/HGIRS\', "3.9:\\\\n\',", "\'.A", \'DDUT2\', 
\'170314\', \'C\', \'DH100603\', \'/HGIRS\', "4.0:\\\\n\',", "\'.A", 
\'DDUT2\', \'170314\', \'C\', \'DH100703\', \'/HGIRS\', "4.2:\\\\n\',", 
"\'.A", \'DDUT2\', \'170314\', \'C\', \'DH101603\', \'/HGIRS\', 
"4.5:\\\\n\',", "\'.A", \'DDUT2\', \'170314\', \'C\', \'DH103404\', 
\'/HGIRS\', "4.7:\\\\n\',", "\'.A", \'DDWT2\', \'170314\', \'C\', 
\'DH100740\', \'/HGIRS\', "0.0:\\\\n\',", "\'.A", \'DCXT2\', \'170314\', 
\'C\', \'DH105825\', \'/HGIRS\', "614.1:\\\\n\',", "\'.A", \'DCRT2\', 
\'170314\', \'C\', \'DH101815\', \'/HGIRS\', "381.1:\\\\n\',", "\'.A", 
\'DBGT2\', \'170314\', \'C\', \'DH103921\', \'/HGIRS\', "394.2:\\\\n\',", 
"\'.A", \'DBUT2\', \'170314\', \'C\', \'DH105533\', \'/HGIRS\', 
"404.1:\\\\n\',", "\'.A", \'DBRT2\', \'170314\', \'C\', \'DH101936\', 
\'/HGIRS\', "447.6:\\\\n\',", "\'.A", \'DBRT2\', \'170314\', \'C\', 
\'DH103306\', \'/HGIRS\', "447.6:\\\\n\',", "\'.A", \'DBZT2\', \'170314\', 
\'C\', \'DH102317\', \'/HGIRS\', "397.1:\\\\n\',", "\'.A", \'DATT2\', 
\'170314\', \'C\', \'DH102058\', \'/HGIRS\', "448.6:\\\\n\']"]'] 

答えて

1

file = open('test1.txt', 'r') 
lines = file.readlines() 
length=lines[0].split('\n') 
number_of_lines=len(length) 

lines=str(lines) 
data=lines.split(' ') 
data=str(data) 
data=data.split('\n') 

file.close() 
file = open('test1.txt', 'w') 

file.write(str(data)) 
file.write('\n') 
file.close() 

file = open('test1.txt', 'w') 
file.write(str(data)) 
file.write('\n') 
file.close() 

出力は次のようですstrを使用して変換すると結果は

"['Hello','world/n','Hi','someone/n']" 

解決策最初の配列の各要素でforを実行することです。

[['Hello', 'world'], ['Hi','someone']] 

次にあなたがforを使用して線でそのデータラインを書き込むことができます。データの出力は次のようになり

data = lines.split('/n') 
data[:] = [x.split(' ') for x in data] 

この方法です。ただ、

Hello 
world 
Hi 
someone 

:この結果の

for line in data: 
    for word in line: 
     file.write("%s/n" % word) 

したい出力がある場合:次に

Hello world 
Hi someone 

for line in data: 
    for word in line: 
     file.write(word) 
    file.write('/n') 

ヒント、 あなたはまた、配列内のデータを結合することができます。

>>>a = ["This","is","a","sentence"] 
>>>"/n".join(a) 
This 
is 
a 
sentence 

しかし、あなたはこれをしようとした場合、それはあなたにエラーを与える:

>>>a = [["This","is","a","sentence"],["An","Other","sentence"]] 
>>>"/n".join(a) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: sequence item 0: expected string, list found 

をしかし、あなたが試すことができます:

>>>a = [["This","is","a","sentence"],["An","Other","sentence"]] 
>>>a[:] = [' '.join(x) for x in a] 
>>>a 
['This is a sentence', 'An Other sentence'] 
+0

良い点、ありがとう – Behi

+0

最初のケースでは、同じ方法で 'file.write( '/ n')'をもう一度追加してください。私はまた今いくつかの間違いをして答えを編集しました –

+0

実際には最初の場合は 'file.write( '/ n')'は必要ありません。問題が解決したら答えを受け入れてください:) –

関連する問題