是否有正则表达式可以从字符串中提取单个字母?

Is there a regex expression to extract a single letter from a string?

我想从 pandas 数据框列中的值中提取字符并将它们存储在新列中。

import pandas as pd
df = pd.DataFrame({'a': ['ABC12345X3423','DEF54321Y34333','GACZY31343Z3432'], 'b': [4,5,6]})

df
                 a  b
0    ABC12345X3423  4
1   DEF54321Y34333  5
2  GACZY31343Z3432  6

以下代码有效,但我使用 2 个提取命令来提取字符串中嵌入的单个字符(当您从右到左阅读时)。

df['c'] = df['a'].str.extract('(^\D+)', expand=False).str.strip()
df['d'] = df['a'].str.extract('([A-Z]\d+\Z)', expand=False).str.strip()
df['d'] = df['d'].str.extract('(^\D+)', expand=False).str.strip()

df
                 a  b      c  d
0    ABC12345X3423  4    ABC  X
1   DEF54321Y34333  5    DEF  Y
2  GACZY31343Z3432  6  GACZY  Z

我可以修改正则表达式以合并最后两行吗?

IIUC,你想提取数字之间的字符

df['d'] = df['a'].str.extract('(?<=\d)([A-Z])(?=\d)')
print(df)

                 a  b  d
0    ABC12345X3423  4  X
1   DEF54321Y34333  5  Y
2  GACZY31343Z3432  6  Z