我有一个以下类型的字符串:
original = '''{ "type": "Feature", "properties": { "POSTNR_TXT": "2740", "POSTBYNAVN": "Skovlunde", "POSTNR_FRA": "2740", "POSTNR_TIL": "2740" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.370879248624883, 55.702694453782499, -999.0 ], [ 12.368759608893962, 55.712782195962298, -999.0 ], [ 12.37592021897154, 55.714470717642058, -999.0 ], [ 12.379768987708616, 55.72179157095912, -999.0 ], [ 12.387458937414024, 55.697314488019053, -999.0 ], [ 12.370879248624883, 55.702694453782499, -999.0 ] ] ] } },
{ "type": "Feature", "properties": { "POSTNR_TXT": "2760", "POSTBYNAVN": "Måløv", "POSTNR_FRA": "2760", "POSTNR_TIL": "2760" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.263563465104953, 55.747721989578324, -999.0 ], [ 12.269722469884702, 55.755314897874221, -999.0 ], [ 12.269036118830314, 55.757243692362579, -999.0 ], [ 12.265194268837073, 55.747241588321643, -999.0 ], [ 12.263563465104953, 55.747721989578324, -999.0 ] ] ] } },
{ "type": "Feature", "properties": { "POSTNR_TXT": "2770", "POSTBYNAVN": "Kastrup", "POSTNR_FRA": "2770", "POSTNR_TIL": "2770" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.648007056263456, 55.646479764886891, -999.0 ], [ 12.647861947597349, 55.646179791784299, -999.0 ], [ 12.648845856031999, 55.644280146846299, -999.0 ], [ 12.627212246529135, 55.641560131234343, -999.0 ], [ 12.648007056263456, 55.646479764886891, -999.0 ] ] ] } },
我想从“POSTBYNAVN”中删除子字符串:“POSTNR_TIL”:这样我的新字符串就像这样:
new = '''{ "type": "Feature", "properties": { "POSTNR_TXT": "2740", "2740" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.370879248624883, 55.702694453782499, -999.0 ], [ 12.368759608893962, 55.712782195962298, -999.0 ], [ 12.37592021897154, 55.714470717642058, -999.0 ], [ 12.379768987708616, 55.72179157095912, -999.0 ], [ 12.387458937414024, 55.697314488019053, -999.0 ], [ 12.370879248624883, 55.702694453782499, -999.0 ] ] ] } },
{ "type": "Feature", "properties": { "POSTNR_TXT": "2760", "2760" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.263563465104953, 55.747721989578324, -999.0 ], [ 12.269722469884702, 55.755314897874221, -999.0 ], [ 12.269036118830314, 55.757243692362579, -999.0 ], [ 12.265194268837073, 55.747241588321643, -999.0 ], [ 12.263563465104953, 55.747721989578324, -999.0 ] ] ] } },
{ "type": "Feature", "properties": { "POSTNR_TXT": "2770", "2770" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.648007056263456, 55.646479764886891, -999.0 ], [ 12.647861947597349, 55.646179791784299, -999.0 ], [ 12.648845856031999, 55.644280146846299, -999.0 ], [ 12.627212246529135, 55.641560131234343, -999.0 ], [ 12.648007056263456, 55.646479764886891, -999.0 ] ] ] } },
我考虑了一些解决方案,但它们只会影响第一个实例。我想我需要某种正则表达式。
答案 0 :(得分:1)
这摆脱了每个POSTBYNAVN
部分。我想你可以自己弄清楚剩下的。干杯。
re.sub('\"POSTBYNAVN\":\s\"[a-zA-z]+\"\,\s', '', original)
编辑:
不幸的是,这个匹配"POSTBYNAVN": "M\xc3\xa5l\xc3\xb8v"
并不匹配,因为它包含特殊符号,因此我将正则表达式更改为:
re.sub('\"POSTBYNAVN\":\s\"([^\s]+)\s', '', original)
([^\s]+)
匹配任何单词,直到第一个空格,现在它按预期工作。
然而,最终的解决方案甚至不使用它,看起来像这样:
re.sub('\"POSTBYNAVN.*?POSTNR_TIL\":\s', '', original)
答案 1 :(得分:1)