Python 如何制作我需要的线路部分?

Python 如何制作我需要的线路部分?,python,regex,pandas,Python,Regex,Pandas,我只需要从表列中提取行的一部分-可以是0到4个字符长: “地址”:“124” 我知道这可以作为'extract'/findall函数来完成。但事实证明,只需要设置一个面具,在这个面具上,只有落在面具下的线路部分才会被击退。正如我所说,代码长度是不同的,所以这种方法是无效的。 请告诉我如何正确设置选择的遮罩 表列中的示例行: {'latitude':'37.8050599961946','human_address': {“地址”:“0”,“城市”:“奥克兰”,“州”:“Ca”,“邮编”:“}”,

我只需要从表列中提取行的一部分-可以是0到4个字符长:

“地址”:“124”

我知道这可以作为'extract'/findall函数来完成。但事实证明,只需要设置一个面具,在这个面具上,只有落在面具下的线路部分才会被击退。正如我所说,代码长度是不同的,所以这种方法是无效的。 请告诉我如何正确设置选择的遮罩

表列中的示例行:

{'latitude':'37.8050599961946','human_address': {“地址”:“0”,“城市”:“奥克兰”,“州”:“Ca”,“邮编”:“}”, “需要重新编码”:False,“经度”:“-122.273019967312”}

我希望这有帮助

dic = {'latitude': '37.80505999961946', 'human_address': '{"address":"1234","city":"Oakland","state":"Ca","zip":""}', 'needs_recoding': False, 'longitude': '-122.27301999967312'}, {'latitude': '37.80505999961946', 'human_address': '{"address":"0","city":"Oakland","state":"Ca","zip":""}', 'needs_recoding': False, 'longitude': '-122.27301999967312'}
df = pd.DataFrame(list(dic))
df


          human_address                                   latitude             longitude        needs_recoding
0   {"address":"1234","city":"Oakland","state":"Ca...   37.80505999961946   -122.27301999967312 False
1   {"address":"0","city":"Oakland","state":"Ca","...   37.80505999961946   -122.27301999967312 False


import re
df.human_address.apply(lambda s: re.search('\"address\"*:*\"\d{0,4}\"', s).group())


0    "address":"1234"
1       "address":"0"
Name: human_address, dtype: object

您可以使用pandas str.extract确实,您只需要调整您的正则表达式模式

下面是取自@Ananay-Mital.的数据帧

>>> df
                                       human_address           latitude            longitude  needs_recoding
0  {"address":"1234","city":"Oakland","state":"Ca...  37.80505999961946  -122.27301999967312           False
1  {"address":"0","city":"Oakland","state":"Ca","...  37.80505999961946  -122.27301999967312           False
以下是使用str.extract获得结果的方法:

>>> df.human_address.str.extract('(\"address\":\"\d{0,4}\")')
                  0
0  "address":"1234"
1     "address":"0"
或者,如下

>>> df.human_address.str.extract(r'("address":"\d{0,4}")')
                  0
0  "address":"1234"
1     "address":"0"

我认为这个问题中有不必要的信息,使它令人困惑。您是在问如何使用正则表达式从字符串中提取1-4位数字(或者从地址的其余部分提取门牌号部分)?是的,我是在问-如何在新列中提取门牌号?
>>> df.human_address.str.extract(r'("address":"\d{0,4}")')
                  0
0  "address":"1234"
1     "address":"0"