我在一个单元格中有以下示例数据:
EmployeeID
2016-CT-1028
2016-CT-1028
2017-CT-1063
2017-CT-1063
2015-CT-948
2015-CT-948
所以,我的问题是如何在数据0
中添加2015-CT-948
到
使其像这样2015-CT-0948
。
我尝试了这段代码:
pattern = re.compile(r'(\d\d+)-(\w\w)-(\d\d\d)')
newlist = list(filter(pattern.match, idList))
只是要获取匹配的正则表达式模式,然后将0
与zfill()
添加在一起,但是它不起作用。拜托,有人可以给我一个想法,我该怎么做。无论如何,我可以在正则表达式或熊猫中做到这一点。谢谢!
答案 0 :(得分:4)
这是使用args.Add("@Clerk", sample.Clerk, DbType.String);
args.Add("@Comments", sample.Comments, DbType.String);
args.Add("@CommentsProd", sample.CommentsProd, DbType.String);
args.Add("@MassOff", sample.MassOff, DbType.String);
args.Add("@PalletID", sample.PalletID, DbType.String);
args.Add("@QCDate", sample.QCDate, DbType.Date);
args.Add("@QtyInspected ", sample.QtyInspected, DbType.Decimal);
args.Add("@StatusClerk", sample.StatusClerk, DbType.String);
args.Add("@StatusSupervisor", sample.StatusSupervisor, DbType.String);
args.Add("@Supervisor", sample.Supervisor, DbType.String);
args.Add("@PackOut", sample.PackOut, DbType.String);
args.Add("@GRV", sample.GRV, DbType.Int64);
args.Add("@PalletSeq", sample.PalletSeq, DbType.Int16);
args.Add("@SampleNo", sample.SampleNo, DbType.Int16);
例如:
$str = "AbCdE";
preg_match_all("/[A-Z]/", $str); // 3
输出:
zfill
答案 1 :(得分:2)
使用大熊猫可以用split
而不是正则表达式来解决:
df['EmployeeID'].apply(lambda x: '-'.join(x.split('-')[:-1] + [x.split('-')[-1].zfill(4)]))
答案 2 :(得分:2)
在熊猫中,您可以使用from this link
df['EmployeeID'] = df.EmployeeID.str.replace(r'-(\d{3})$', r'-0\1', regex=True)
# Output:
0 2016-CT-1028
1 2016-CT-1028
2 2017-CT-1063
3 2017-CT-1063
4 2015-CT-0948
5 2015-CT-0948
Name: EmployeeID, dtype: object
答案 3 :(得分:1)
如果严格定义了ID的格式,您还可以使用简单的列表理解来完成此工作:
ids = [
'2017-CT-1063',
'2015-CT-948',
'2015-CT-948'
]
new_ids = [id if len(id) == 12 else id[0:8]+'0'+id[8:] for id in ids]
print(new_ids)
# ['2017-CT-1063', '2015-CT-0948', '2015-CT-0948']
答案 4 :(得分:1)
这是一个班轮:
df['EmployeeID'].apply(lambda x: '-'.join(xi if i != 2 else '%04d' % int(xi) for i, xi in enumerate(x.split('-'))))