Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的正则表达式(123/4)_Python_Regex_Csv - Fatal编程技术网

python中的正则表达式(123/4)

python中的正则表达式(123/4),python,regex,csv,Python,Regex,Csv,我有以下字符串: line = '5320411, 996/7 W/O ABC ANO-20' 在遇到123/4格式的数字后,我想添加一个逗号。 我的方法是使用正则表达式,我对正则表达式相当陌生。我尝试了以下方法: re.sub('^(\S+)\s+\[0-9]{3}/[0-9]{1}', ',', line) 首先,我在开始时检查一个或多个空格,后面是三位数,后面是斜杠,然后是另一个数字。然而,我似乎不知道如何在这种模式出现后使用逗号 预期输出应如下所示: line = '532

我有以下字符串:

line = '5320411,  996/7     W/O ABC ANO-20'
在遇到123/4格式的数字后,我想添加一个逗号。 我的方法是使用正则表达式,我对正则表达式相当陌生。我尝试了以下方法:

re.sub('^(\S+)\s+\[0-9]{3}/[0-9]{1}', ',', line)
首先,我在开始时检查一个或多个空格,后面是三位数,后面是斜杠,然后是另一个数字。然而,我似乎不知道如何在这种模式出现后使用逗号

预期输出应如下所示:

line = '5320411,  996/7 ,    W/O ABC ANO-20'

re.sub

re.sub(r'\b(\d{3}\/\d)\b', r'\1,', line)

# Output
'5320411,  996/7,     W/O ABC ANO-20'
正则表达式解释(演示):


这里的关键是,我们不想用逗号替换模式,我们想用模式加逗号替换模式,我们可以通过在匹配的第一组中捕获模式,并用匹配的第一组替换模式,最后添加逗号,或者:
\1,
re.sub

re.sub(r'\b(\d{3}\/\d)\b', r'\1,', line)

# Output
'5320411,  996/7,     W/O ABC ANO-20'
正则表达式解释(演示):


这里的关键是,我们不想用逗号替换模式,我们想用模式加逗号替换模式,我们可以通过在匹配的第一组中捕获模式,然后用匹配的第一组替换模式,最后添加逗号,或者:
\1,

您使用积极的后视:

import re
line = '5320411,  996/7     W/O ABC ANO-20'
new_line = re.sub('(?<=\d{3}/\d{1})\s', ' ,', line)

您使用积极的后视:

import re
line = '5320411,  996/7     W/O ABC ANO-20'
new_line = re.sub('(?<=\d{3}/\d{1})\s', ' ,', line)

只是一件小事。如果斜杠后面有两个数字而不是一个,我会使用re.sub(r'\b(\d{3}\/\d{1})\b',r'\1',行)来检查一个和两个数字吗?正确,
\b(\d{3}\/\d{1,2})\b
会接受一个或两个数字。只是一件小事。如果斜杠后面有两个数字,而不是一个,我会使用re.sub(r'\b(\d{3}\/\d{1,2]})\b',r'\1',行)检查一位和两位数字吗?正确,
\b(\d{3}\/\d{1,2})\b
会接受一位或两位数字。