首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式错误:位置6处的字符范围8-1不正确

正则表达式错误:位置6处的字符范围8-1不正确
EN

Stack Overflow用户
提问于 2019-12-13 22:23:55
回答 2查看 407关注 0票数 1

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

如果第一个字符的值为1,第二个字符为2-10,则将其标记为"Lost“,依此类推。

代码语言:javascript
复制
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

我将使用的映射:

代码语言:javascript
复制
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',
}

并尝试实现它:

代码语言:javascript
复制
x['Label'] = x['Segment'].replace(segt_map, regex=True)

error: bad character range 8-1 at position 6

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-13 22:29:45

字符类匹配的是字符而不是数字。[8-10]的意思是[8-1][0]。你想要这个:

代码语言:javascript
复制
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',
}
票数 3
EN

Stack Overflow用户

发布于 2019-12-13 22:28:07

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59324462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档