Skip to main content
 首页 » 编程设计

python之正则表达式错误 : bad character range 8-1 at position 6

2025年05月04日25shanyou

我正在尝试根据列中的字符映射一个新值。这些是存储为字符串的数字。

如果第一个字符的值为 1,第二个字符为 2-10,则将其标记为“丢失”等。

print(x[['Segment']].head(15)) 
 
   Segment 
0       12 
1       12 
2       22 
3       14 
4       54 
5       12 
6       12 
7       56 
8       12 
9       12 
10      22 
11      12 
12     310 
13      22 
14      53 

我将使用的映射:

segt_map = { 
r'[4-5][8-10]': 'Champion', 
r'[4-5][4-7]': 'Loyal', 
r'[4-5][2-3]': 'Recent', 
r'3[6-10]': 'High Potential', 
r'3[2-5]': 'Need Nurturing', 
r'2[6-10]': 'Cannot Lose', 
r'2[2-5]': 'At Risk', 
r'1[2-10]': 'Lost', 
} 

并尝试实现它:

x['Label'] = x['Segment'].replace(segt_map, regex=True) 
 
error: bad character range 8-1 at position 6 

我不确定我的错误是什么,我已经检查了相关问题,它们与我的不相似。我查看了位置 6,您可以在上面看到它。我找不到 range 8-1 吗?那么这里发生了什么?

完整的错误跟踪很长,但如果需要,我可以发布。

请您参考如下方法:

字符类匹配字符而不是数字。 [8-10] 表示[8-1] 或[0]。你想要这个:

segt_map = { 
r'[4-5]([8-9]|10)': 'Champion', 
r'[4-5][4-7]': 'Loyal', 
r'[4-5][2-3]': 'Recent', 
r'3([6-9]|10)': 'High Potential', 
r'3[2-5]': 'Need Nurturing', 
r'2([6-9]|10)': 'Cannot Lose', 
r'2[2-5]': 'At Risk', 
r'1([2-9]|10)': 'Lost', 
}