将zip+4转换为zip python



我希望将zip+4代码转换为pandas数据框架中的邮政编码。我希望它能识别邮政编码的存在,并只保留前5位数字。我想有效地执行下面的代码(尽管这在这种格式下不起作用):

df.replace('^(d{5}-?d{4})', group(1), regex=True)

下面的代码对列表执行相同的过程,我希望在数据框中执行相同的操作。

my_input = ['01234-5678', '012345678', '01234', 'A1A 1A1', 'A1A1A1']
expression = re.compile(r'^(d{5})-?(d{4})?$')
my_output = []
for string in my_input: 
if m := re.match(expression, string): 
my_output.append(re.match(expression, string).group(1)) 
else: 
my_output.append(string)

可以使用

df = df.replace(r'^(d{5})-?d{4}$', r'1', regex=True)

参见regex演示。

细节:

  • ^-字符串
  • 起始
  • (d{5})-第一组(1):五位
  • -?-可选-
  • d{4}-任意四位
  • $-字符串结束

最新更新