2012-03-23 3 views
0

は、これは、データファイルの簡易版である:州名を都市名に分割すると、両方を含むリストが返されます。

Wichita, KS[3769,9734]279835 
308 1002 1270 1068 1344 1360 1220 944 1192 748 1618 1774 416 1054 
Wheeling, WV[4007,8072]43070 
1017 1247 269 255 1513 327 589 203 1311 416 627 605 2442 998 85 
West Palm Beach, FL[2672,8005]63305 
1167 1550 1432 965 1249 2375 1160 718 1048 2175 760 1515 1459 3280 1794 1252 
Wenatchee, WA[4742,12032]17257 
3250 2390 1783 1948 2487 2595 1009 2697 2904 2589 1394 2690 1765 2912 117 1461 
2358 
Weed, CA[4142,12239]2879 
622 3229 2678 1842 1850 2717 2898 1473 2981 3128 2880 1858 2935 2213 3213 505 
1752 2659 
Waycross, GA[3122,8235]19371 
2947 2890 360 820 1192 1097 605 904 2015 828 386 703 1815 413 1155 1127 
2920 1434 899 
Wausau, WI[4496,8964]32426 
1240 2198 1725 1600 708 841 1138 805 913 848 1015 1222 907 646 1008 111 
1230 1777 509 676 
Waukegan, IL[4236,8783]67653 
244 1000 2260 1933 1360 468 757 1023 565 673 1056 775 982 667 854 768 
170 990 1985 551 436 
Watertown, SD[4490,9711]15649 
601 393 1549 1824 1351 1909 1058 572 880 1155 1263 534 1365 1572 1257 394 
1358 433 1580 1403 156 1026 

そして、ここで私が今持っているコードです...私は今、今ラインから都市と州名を分割することができますが、私はどのように取得することができます都市名を呼び出すことによって都市の座標を取得し、どのように都市名を呼び出すことによって都市の人口を得ることができますか?例:[x、y]は座標であり、[]の直後の数字は母集団...

fin = open ("miles.txt","r") 
    cities=[] 
    for line in fin: 
     A=line.split() 
     if A[0][0] not in '': 
      B= A[0] + A[1][0]+ A[1][1] 
      cities.append[B] 
    print cities 

ありがとう!どんな助けもありがとう!

+0

これは 're.findall(r '(。*?)\ ['、st)' output = '['Watertown、SD']'です。 – RanRag

+0

これは、http://stackoverflow.com/questions/9826669/how-do-read-from-a-file-consists-of-city-names-and-coordinates-populations-and/9827258の複製のように見えます。 #9827258 – jdi

+0

それは私です@jdi私はあなたの手続きに従っていません....私は自分のコードを書いて、再び立ち往生した... – Braybray

答えて

1

さて、あなたが投稿したデータは,セパレーター後わずか2文字の郵便番号を示していることから、私がしたい:

city, state = line.split(', ') 
state = state[:2] 
return (city, state) 

次の2つの文字ではないいくつかのデータを持っていれば郵便番号、私は期待[文字を探したい:

city, state = line.split(', ') 
state = state[:state.index('[') 
return (city, state) 

は、人口を取得するには、あなたが残しておきたい統計情報の辞書を作成する必要があります。 そして、はい、私はそれが醜いことを知っている:

fin = open ("miles.txt","r") 
stats={} 
for line in fin: 
    if line[0].isalpha(): #its got a city, state, x, y and pop stat to keep 
     city, state = line.split(', ') 
     state = state[ :state.index('[') ] 
     #get the two elements around the commas within the square brackets 
     lat, lng = line[ line.index('[') +1 : line.index(']') ].split(',') 
     #get the element after the last right bracket 
     pop = line[line.index(']') +1 :] 
     stats.update({(city, state): (lat, lng, pop)}) 
return stats 

そこから、あなたは、テキストファイルからstatsとおもちゃの周りにできるようになります。

鍵の衝突がないことを確認してください...あなたの統計のユニークなバインディング要素としてタプルがあります... 都市の名前からデータを取得したくないということを覚えておいてください1つ以上のスプリングフィールドがあります)、代わりにキー一致の統計情報を参照します(city, state)。返されたvalueは、その行にあったx、y、および母集団の統計値になります。

>>> stats.get(('Waukegan, IL')) 
(4236, 8783, 67653) 
>>> stats.get(('Waukegan, IL'))[-1] 
67653 
+0

ありがとう...私は今、どのように動作するのか知っていますが、都市名を呼んで人口と座標を返す方法はありますか? – Braybray

+0

あなたのために更新されました。これが動作するかどうか私に教えてください。 – Droogans

+0

それに取り組んでいます。あなたのテキストファイルが変更された場合、この全部がクラッシュするのを忘れないでください。 – Braybray