用城市名称分割州名称,返回包含两者的列表? [英] Splitting a state name with a city name, return a list containing both?

查看:107
本文介绍了用城市名称分割州名称,返回包含两者的列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,这是数据文件的简化版本:

So this is the simplified version of the data file:

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]是坐标,紧随其后的数字是[]是人口...。

And here is the code I have now...I can now split the city and state name from the line now but How can i get the coordinates of the city by calling the city names and how can i get the population of the city by calling city names? eg: [x,y] is the coordinates and the number right after[] is the population....

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

谢谢!任何帮助将不胜感激!

Thanks! Any help will be appreciated!

推荐答案

由于您发布的数据在之后仅显示两个字母的邮政编码, 分隔符,我想:

Well since the data you've posted is showing just a two letter postal code after a , separator, I'd:

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

如果您有一些不是两个字母的邮政编码的数据,我会寻找预期的 [字符:

If you've got some data that isn't a two letter postal code, I'd look for the expected [ character:

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

要获得人口,您需要对要统计的数据做一个字典保持。
是的,我知道这很丑:

To get the population, you'll need to make a dictionary of the stats you want to keep. And yes, I know it's ugly:

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

从那里,您就可以使用统计信息来自文本文件。

From there, you'll be able to toy around with the stats from your text file.

只需确保没有按键冲突...您就有一个元组作为统计信息的唯一绑定元素。请记住,您不希望从城市名称中获取数据(有多个Spr ingfield),而是查找匹配(城市,州)的键的统计信息。返回的将是您在该行上的x,y和人口统计信息。

Just make sure you don't have key collisions...you have a tuple as your unique binding element for your stats...Keep in mind you wouldn't want to get data from a city name (there's more than one Springfield), but instead do a lookup on stats for the key matching (city, state). The value returned will be the x, y and population stats you had on that line.

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

这篇关于用城市名称分割州名称,返回包含两者的列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆