我有一个列,其中的数据有时会缺少圆括号:所需的输出是要么删除大括号并在数字前引入负号,要么添加开始/结束大括号(如果缺少)。例如—“10752”至“-10752”或“(10752)”
输入-
0. 21,028
1. 11,689
2. 94
3. 10,572)
4. 2,261
名称:销售,数据类型:对象
所需输出
或-
0. 21,028
1. 11,689
2. 94
3. (10,572)
4. 2,261
或
0. 21,028
1. 11,689
2. 94
3. -10,572
4. 2,261
可能吗?或者,你可以把它看成这样的字符串:
testz = '21,028 \n1 11,689 \n2 94 \n3 10,572) \n4 2,261 \n
要求的输出:
21,028 \n1 11,689 \n2 94 \n3 (10,572) \n4 2,261 \n
或
21,028 \n1 11,689 \n2 94 \n3 -10,572 \n4 2,261 \n
如您所见,“10572”替换为(10572)或-10572
现在我知道了如何一起删除括号-re.sub(r'[()]', r'', testz)
但是要诱导一个或用负数替换这个数,我不知道怎么做
如果我添加新输入:
0. 80,123
1. 5,060
2. (4,756 )
3. ( 16,572)
4. ( 14,673 )
Name: sale , dtype: object
或
testz = '80123 \n1 5,060 \n2 (4756) \n3 (16,572) \n4 (14,673) \n '
testz.replace(r'\((\d+(?:\.\d+)?)\b(?!\))|\b(?<!\()(\d+(?:\.\d+)?)\)', r'-\1\2')
停止工作。你知道会出什么问题吗
您希望在任何数字之前添加一个
-
,该数字在左侧、右侧或两侧至少用一个括号括起来使用基于交替的正则表达式:
见regex demo
详细信息
\(?\s*(\d+(?:,\d+)?)\s*\)
-可选的(
,0+空格,第1组:1+位,后跟可选的,
和1+位序列;然后是0+个空格和一个)
字符|
-或\(\s*(\d+(?:,\d+)?)\s*\)?
-a(
字符,0+空格,第1组:1+个数字,后跟可选的,
和1+个数字序列;然后是0+空格和可选的)
字符相关问题 更多 >
编程相关推荐