检查列中的字符串是否匹配两种格式之一,如果不重新设置字符串格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查列中的字符串是否匹配两种格式之一,如果不重新设置字符串格式相关的知识,希望对你有一定的参考价值。
我有一列字符串,这些ID是应该遵循以下格式的ID:C-xxxxx-U-##或C-xxxxx-UX-##,其中x可以是数字或大写字母。
我想检查ID是否遵循这两种格式,如果不是,我想重新设置字符串的格式。
一些示例数据:
C-20BV7-U-00
C-20BW5-U-00
C1AWT4-UR-00 <--- wrong format
C-1B8V9-UR-00
C-20BX2-U-00
我认为这会给我不遵循该格式的行
result=df["ID"].str.match(pat='C-[A-Z0-9]{5}-U[A-Z0-9]{0,1}-[0-9]{2}$')
temp=df.loc[~result,"ID"]
但是我如何将格式更改为我想要的格式而没有特定的替换,因为我不知道它与格式会有什么不同
答案
使用特定的正则表达式替换:
In [51]: df['ID'].str.replace(r'^C([^-])', 'C-\1').replace(r'-U[^A-Z0-9]+', '-U')
Out[51]:
0 C-20BV7-U-00
1 C-20BW5-U-00
2 C-1AWT4-UR-00
3 C-1B8V9-UR-00
4 C-20BX2-U-00
Name: ID, dtype: object
以上是关于检查列中的字符串是否匹配两种格式之一,如果不重新设置字符串格式的主要内容,如果未能解决你的问题,请参考以下文章