正则表达式错误:位置6处的错误字符范围81

2024-10-03 00:20:10 发布

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

我正在尝试基于列中的字符映射一个新值。这些是以字符串形式存储的数字。你知道吗

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

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?那么这里发生了什么?你知道吗

完整的错误跟踪很长,但是如果需要的话我可以发布它。你知道吗


Tags: 字符串标记map错误segmentrange数字字符
2条回答

您尝试使用regex来检测数字范围,而它是一个用于处理对数字一无所知的文本的工具。不能使用范围8-10,因为范围用于字符。可以使用[1-9],因为它是关于字符的,但是[1-10]是不正确的。相反,您应该解析文本ro编号,然后将它们与重写的范围进行比较。你知道吗

字符类匹配字符而不是数字。[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',
}

相关问题 更多 >