【问题标题】:How do I map one or two letters to a region in Python? [duplicate]如何在 Python 中将一两个字母映射到一个区域? [复制]
【发布时间】:2021-06-03 00:57:18
【问题描述】:

我有以下函数将邮政编码的前两个字母映射到一个国家。但是,它不能识别只有一个字母后跟一个数字,即“B4”或“N1”,因此它不会映射它并返回“Other”。

我该怎么做才能让它识别单个字母后跟数字?

我的功能是:

def parse_to_find_country(x):

if (x == "BT"):
   return "Northern Ireland"
elif (x == "CF")|(x == "SA")|(x == "LD")|(x == "LL")|(x == "NP"):
   return "Wales"
elif (x == "AB")|(x == "DD")|(x == "DG")|(x == "EH")|(x == "FK")|(x == "G")|(x == "HS")|(x == "IV")|(x == "KA")|(x == "KN")|(x == "KY")|(x == "ML")|(x == "PA")|(x == "PH")|(x == "TD")|(x == "ZE"):
   return "Scotland"
elif (x == "AL")|(x == "B")|(x == "BA")|(x == "BB")|(x == "BD")|(x == "BH")|(x == "BL")|(x == "BN")|(x == "BR")|(x == "BS")|(x == "CA")|(x == "CB")|(x == "CH")|(x == "CM")|(x == "CO")|(x == "CR")|(x == "CT")|(x == "CV")|(x == "CN")|(x == "DA")|(x == "DE")|(x == "DH")|(x == "DL")|(x == "DN")|(x == "DT")|(x == "DY")|(x == "E")|(x == "EC")|(x == "EH")|(x == "EN")|(x == "EX")|(x == "FY")|(x == "GL")|(x == "GU")|(x == "HA")|(x == "HD")|(x == "HG")|(x == "HP")|(x == "HR")|(x == "HU")|(x == "HX")|(x == "IG")|(x == "IP")|(x == "KT")|(x == "L")|(x == "LA")|(x == "LE")|(x == "LN")|(x == "LS")|(x == "LU")|(x == "M")|(x == "ME")|(x == "M")|(x == "MK")|(x == "N")|(x == "NE")|(x == "NG")|(x == "NN")|(x == "NR")|(x == "NW")|(x == "OL")|(x == "OX")|(x == "PE")|(x == "PL")|(x == "PO")|(x == "PR")|(x == "RG")|(x == "RH")|(x == "RM")|(x == "S")|(x == "SE")|(x == "SG")|(x == "SK")|(x == "SL")|(x == "SM")|(x == "SN")|(x == "SO")|(x == "SP")|(x == "SR")|(x == "SS")|(x == "ST")|(x == "SW")|(x == "SY")|(x == "TA")|(x == "TF")|(x == "TN")|(x == "TQ")|(x == "TR")|(x == "TS")|(x == "TW")|(x == "UB")|(x == "W")|(x == "WA")|(x == "WC")|(x == "WD")|(x == "WF")|(x == "WN")|(x == "WR")|(x == "WS")|(x == "WV")|(x == "YO"):
   return "England"
else:
   return "Other"

【问题讨论】:

  • 您的代码看起来很容易翻译成字典:python
  • 好的,那么您想检测字符串开头的某个特定事物的时间?当您将python string starts with 放入搜索引擎时发生了什么?
  • 较短:if x in ("CF", "SA", "LD", "LL", "NP")。但是如果你想检查字符串是否以B 开头,那么你应该使用x.startswith("B")。最终你可以使用模式re 来使用regexB\d 来检查char B 和任何digit
  • | 用于位操作 - 对于布尔值(真/假),您应该使用 or

标签: python


【解决方案1】:

在 if 块之前添加:

if x[1:].isnumeric():
    x = x[0]

它检查第二个(和下一个)字符是否为数字,在这种情况下将其删除,使 if 子句起作用。

【讨论】:

    【解决方案2】:

    从字符串中删除数字

    from string import digits
    remove_digits = str.maketrans('', '', digits)
    x = x.translate(remove_digits)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-25
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多