如何替换python中可用的最后2个字符

2024-10-04 07:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

分析并替换字符串中的最后2个特定字符(如果可用)

例如:0=O,5=S,1=I

输入数据:

Col1

AZBYCCCD0
NZBY23HG1
BZYCQ05CO
YODZ225H0
NaN
CS45DRNZQ

预期输出:

Col1

AZBYCCCDO
NZBY23HGI
BZYCQ05CO
YODZ225HO
NaN
CS45DRNZQ

我一直在尝试使用:

repl = {'0':'O','1':'I'}
df['Col1'] = df['Col1'].astype(str).str[7:].replace(repl, regex=True)

但是上面的脚本不起作用

请建议


Tags: 数据字符串dfnanrepl字符col1str
3条回答

您看到的问题是,您只选择了最后两个字符,因此函数只返回最后两个字符。您需要将原始部分与替换部分合并

df = pd.DataFrame([
'AZBYCCCD0',
'NZBY23HG1',
'BZYCQ05CO',
'YODZ225H0',
pd.np.NaN,
'CS45DRNZQ',], columns = ['Col1'])

repl = {'0':'O','1':'I'}
df['Col1'].astype(str).str[:7] + df['Col1'].astype(str).str[7:].replace(repl, regex=True)

如预期的那样返回:

0    AZBYCCCDO
1    NZBY23HGI
2    BZYCQ05CO
3    YODZ225HO
4          nan
5    CS45DRNZQ
Name: Col1, dtype: object

可以通过replace完成:如果需要,修改regexlambda函数:

repl = {'0':'O','1':'I'}
df['Col1'] = df['Col1'].str[:7] + df['Col1'].str[7:].str.replace(r'0|1', lambda x : repl[x.group(0)], regex=True)
#or
df['Col1'] = df['Col1'].str[:7] + df['Col1'].str[7:].replace(repl, regex=True)

我想你可以试试这样的方法(假设你一次只写一个单词):

repl = {'0':'O','1':'I', '5':'S'}

def func1(string):
 str_list = list(string)
 for i in range(len(str_list)):
  if str_list[i] in repl:
   str_list[i] = repl[str_list[i]]
 string = "".join(str_list)
 return string

相关问题 更多 >