Python 重新格式化普查标题

Python 重新格式化普查标题,python,gis,census,Python,Gis,Census,我的任务是通过人口普查数据挖掘街区层面的信息。 在学习如何导航并找到我要找的东西后,我遇到了一个障碍。 tabblock polygons(块级多边形)的id由15个长度的字符串组成 例如:“4715700102022” 但人口普查数据的格式标记为: “田纳西州谢尔比县人口普查区1第2组2022区块” 块id的格式为: 州-县域组块,带有一些前导零以组成15个字符。 SSCCCTTGGBBBB 有人知道一种快速的方法将其转换成可用的格式吗? 在我花时间编写python脚本之前,我想我应该先问一下

我的任务是通过人口普查数据挖掘街区层面的信息。 在学习如何导航并找到我要找的东西后,我遇到了一个障碍。 tabblock polygons(块级多边形)的id由15个长度的字符串组成

例如:“4715700102022”

但人口普查数据的格式标记为:

“田纳西州谢尔比县人口普查区1第2组2022区块”

块id的格式为: 州-县域组块,带有一些前导零以组成15个字符。 SSCCCTTGGBBBB

有人知道一种快速的方法将其转换成可用的格式吗? 在我花时间编写python脚本之前,我想我应该先问一下

谢谢, gm

嗯,我明白了

ex='田纳西州谢尔比县人口普查区1第2组2022区块'

new_id='47157'+ex[40:len(ex)-26].zfill(4)+'0'+ex[24]+ex[6:10]


州和县的值是恒定的;块组仅指向一个数字(afaik)。

使用struct可能更整洁

>>> import struct
>>> r = '471570001022022'
>>> f = '2s3s4s2s4s'
>>> struct.unpack(f, r)
('47', '157', '0001', '02', '2022')
>>> s, c, t, g, b = unpack(f, r)
>>> print s
47
假设是正确的,您已将其解析到两个字典中,
state\u id
country\u id
,其中键是实体的字符串表示形式,值是字符串的数字表示形式:

def get_tabblock_id(tabblock_string):
    block, block_group, tract, county, state = re.match('Block (\\d+), Block Group (\\d+), Census Tract (\\d+), (.+), (.+)', tabblock_string).groups()
    return state_ids[state].zfill(2) + county_ids[county].zfill(3) + tract.zfill(4) + block_group.zfill(2) + block.zfill(4)

来自人口普查:“田纳西州谢尔比县人口普查区1第2组2022区块”,但我需要它读一下:“4715700102022”。你是如何得到州和县名称及其数字表示之间的映射的?当我回到工作场所,看看它是如何进行的。最佳答案:从人口普查页面上的“事实查询器”中的给定选项下载正确的格式。csv提供了一个格式正确的ID字段。另外:格式为ss-ccc-tttttt-bbbb(州、县、区、区块),区块组不存在。我用一个dict{}找到了这些小册子,并给出了正确的格式。然后,当我找到下载选项时,我把它擦掉了。