我对python 3非常陌生,我正在开发一个REST API来格式化JSON中的一些字符,JSON包含许多字符串(有时数千个),JSON具有以下结构:
[
[
"city",
"Street 158 No 96"
],
[
"city",
"st 144 11a 11 ap 104"
],
[
"city",
"Street83 # 85 - 22"
],
[
"city",
"str13 #153 - 81"
],
[
"city",
"street1h # 24 - 29"
]
]
因此,我在excel宏上替换它的方法是
text = Replace(text, "st", " street ", , , vbTextCompare)
For i = 0 To 9 Step 1
text = Replace(text, "street" & i, " street " & i, , , vbTextCompare)
text = Replace(text, "st" & i, " street " & i, , , vbTextCompare)
这会将每个单元格的格式设置为“street#”,无论数字是多少,现在的问题是,当我尝试使用python执行此操作时,现在我已经学会了如何替换列表中的多个值,如下所示:
addressList= []
for address in request.json:
address = [element
.replace('st', 'street ')
.replace('street1', 'street 1')
.replace('street2', 'street 2')
.replace('street3', 'street 3')
.replace('street4', 'street 4')
.replace('street5', 'street 5')
#and so on for st too
for element in address]
addressList.append(address)
这种方法不仅很长而且很难看,我想做一些像以前一样的事情,但是我似乎不能用a来替换内部,我应该在外部做吗
谢谢你的帮助
--编辑--
编辑json格式,使其有效
尝试了revliscano和第四只鸟的回复,它们都有效,目前我使用revliscano的方法,因为它允许我在“一行”内从原始Json创建列表
我会用正则表达式来解决这个问题。尝试以下方法
您可以使用模式匹配
st
和可选reet
以及可选空格,而不是使用多个替换调用,然后在组中捕获1+个数字Regex demoPython demo
在替换中,使用re.sub使用捕获组
street \1
单个元素的示例代码
输出
您可以将正则表达式与字典混合使用,以加快速度
我在我的一个程序中使用了这样的函数
adict
是一个字典,其中包含要替换的字符的映射对你来说,这是可能的
当然,不能使用完全相同的函数。您必须根据需要编写另一个正则表达式,就像
@The fourth bird
所做的那样相关问题 更多 >
编程相关推荐