Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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

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 regex帮助删除a+;_Python_Regex_Bash - Fatal编程技术网

Python regex帮助删除a+;

Python regex帮助删除a+;,python,regex,bash,Python,Regex,Bash,我对+符号有问题。 这是我的CSV格式 wifichannelnumber+ssid+macaddress of AP 下面是一个好的例子 6+Jills-Equinox+78:61:7c:19:xx:xx 这是我的问题。注意S8旁边的+符号 11+Samsung-Galaxy-S8+-4469+a2:cc:2b:8d:xx:xx 我想删除bash或python(Edit)中的plus以获得整个CSV您想要的正则表达式是: phone = "11+Samsung-Galaxy-S8+-44

我对+符号有问题。 这是我的CSV格式

wifichannelnumber+ssid+macaddress of AP
下面是一个好的例子

6+Jills-Equinox+78:61:7c:19:xx:xx
这是我的问题。注意S8旁边的+符号

11+Samsung-Galaxy-S8+-4469+a2:cc:2b:8d:xx:xx
我想删除bash或python(Edit)中的plus以获得整个CSV您想要的正则表达式是:
phone = "11+Samsung-Galaxy-S8+-4469+a2:cc:2b:8d:xx:xx"
print(phone.replace("S8+","S8"))
>>>11+Samsung-Galaxy-S8-4469+a2:cc:2b:8d:xx:xx
^(\d+)\+(.*)+([\w\d]{2}\:){5}[\d\w]{2})$


然后可以使用python删除第二个正则表达式组中的每个“+”符号

python
解决方案:

s = '11+Samsung-Galaxy-S8+-4469+a2:cc:2b:8d:xx:xx'
if s.count('+') > 2:
    parts = s.split('+')
    s = '{}+{}+{}'.format(parts[0], ''.join(parts[1:-1]), parts[-1])

print(s)
输出:

11+Samsung-Galaxy-S8-4469+a2:cc:2b:8d:xx:xx

那么,您当前的try/解决方案不起作用了吗?因此,
+
是您的字段分隔符,您的数据中有一个不带引号的
+
,它破坏了格式,不是吗?如果您想匹配任何通用正则表达式格式的
+
(无需提前知道它是BRE还是ERE),
[+]
是适当的语法。因此,在sed:
sed-i''s/-S8[+]-/-S8-/g'filename.csv
…也就是说,仅仅因为您认为这些可能有助于解决问题而使用一系列语言/工具进行标记是不好的形式。如果您只是想要一个在UNIX中工作的解决方案,无论它使用bash、sed、awk或Python还是其他什么,只需标记
UNIX
,让回答问题的人建议适合这项工作的工具。(这也是展示你尝试了什么以及失败的好形式——这让我们知道你在哪里陷入困境,从而更准确地知道哪里需要指导)。虽然此代码片段可能会解决此问题,但确实有助于提高您的文章质量。请记住,您将在将来为读者回答此问题,而这些人可能不知道您提出代码建议的原因。