如何用特定字符填充表中的另一个字段



我试图通过将一个字段中的地址方向转移到另一个字段来修改表。让我们说";地址";所述表的字段是";123 Fake Street S";我只需要将S转移到一个称为"S"的字段中;strtDirect";。但是,有些地址没有关联的方向。所以我现在的代码如下:[计算字段工具中的代码][1][1]:https://i.stack.imgur.com/GSfsg.jpg

(图片会给出更好的图片(:所以这个代码将方向转移到正确的字段,但当它到达一个没有方向的地址时,字段就会停止填充。我想我需要一个if语句。任何想法都将不胜感激。我对此很陌生。

def GetStrtDirect(strtAddress):
aList = strtAddress.split(" ")
return aList[3]

您可能想要这样的东西:

DIRECTIONS = ['N', 'E', 'S', 'W']
def get_strt_direct(strt_address):
return (
None 
if (not strt_address) or (dir := strt_address.split()[-1]) not in DIRECTIONS 
else dir
)

这确保了如果strt_address为空,或者如果它没有以给定方向之一结束,则结果为None。我假设这里只有4个,但当然您可能需要添加'NW''SE'等,甚至可能添加'East'等。在这种情况下,您可能需要检查strtAddress.split()[-1].lower()是否不在该值中,并返回原始值。

  • strt_address.split()[-1]在空白上拆分strt_address,然后取最后一个
  • (dir := ..)将结果分配给dir,但也评估结果以进行比较

具有建议更改的解决方案:

DIRECTIONS = ['N', 'E', 'S', 'W', 'North', 'East', 'South', 'West']
def get_strt_direct(strt_address):
return (
None 
if (not strt_address) or strt_address.split()[-1].lower() not in DIRECTIONS 
else strt_address.split()[-1]
)

如果您有一个地址即字符串字段/值,您将不得不编写一段相当复杂的代码来提取值,是的。在你的例子中;123 Fake Street S";,街道名称由两个单词组成,但也可能是一个。。。或者三个?所以,是的,你肯定会得到很多条件句。因此,如果可能的话,我会尝试让这个字符串使用一些特殊的字符来分隔重要值。像","或"|"。以便您可以在拆分中使用这些值,例如

street_number,street_name,street_direction=str_val.split(','(

这将解构一个字符串,比如";123|假大街|S";,分为3个变量。

"21 Main St";,自然会变成";21,Main St,";。如果您的数据包括城镇/锡蒂/邮政编码,您将继续使用该约定

否则你"如果";将很快变得难以管理。在数据中添加至少一些格式约定将有助于

相关内容

最新更新