我对正则表达式有点新,我无法使代码正常工作。 我有一组存储在csv中的数据。其中一些可能是“脏的”,即不是我期望它们的格式。 通常,数据如下所示:123.4 unit
例如:它可以是
所以,它是:
[未知位数] +。 + [未知位数] + \ s + [单位=从a到z的字符串,它们之间带有“/”]
我的代码如下:
def parse_csv(content, delimiter = ';'): ##We use here ";" to parse CSV because of the European way of dealing with excel-csv
csv_data = []
for line in content.split('\n'):
csv_data.append( [x.strip() for x in line.split( delimiter )] ) # strips spaces also
return csv_data
Sans_ND=parse_csv(open('Sans_ND.csv','rU',encoding="ISO-8859-1").read())
for row in Sans_ND:
for i in range(1,len(row)):
if re.search(r"\d+\.\d+\s\b[a-z]+/[a-z]+\b",item):
continue
else:
print("Formating Error",row[i],"in",row[0],"Col=",i)
由于输出是整个数组,并且因为我的整个数组格式不正确,所以我很确定我想要的正则表达式翻译是平庸的。
此外,我尝试将[a-z]
替换为\w
,但它没有改善输出。
我该如何解决这个问题?我在这里对Regex没有什么了解?
编辑:我所说的“脏”是指例如0.4-32-0%或0.4 mg / kg的东西。
编辑:使用当前代码和@sln在评论中建议的代码,我得到了例如:
Formating Error 0.1 % en Arachidonic acid col 25
Formating Error 0.07 % en Arachidonic acid col 26
Formating Error 0.07 % en Arachidonic acid col 27
Formating Error 0.08 % en Arachidonic acid col 39
Formating Error 0.08 % en Arachidonic acid col 40
EDIT2:有了正确答案,我得到了同样的错误。 以下是一些额外的输出:
Formatting error 350 mg/kg in Angelica root col 2
Formatting error 350 mg/kg in Angelica root col 3
Formatting error 350 mg/kg en Angelica root col 4
EDIT3:这些是来自Sans_ND.csv的一些输入请求它的评论员(b3000)
Arachidonic acid;Arachidonic Acid;0.07 %;0.08 %;0.07 %;0.06 %
Arginine;;2.2%;2.2%;2.2%;2.2%;1.8%
Beta carotene,Beta-carotene;;1.5 mg/kg;1.5 mg/kg;0.4 mg/kg
Branched-chain amino acids,Branched-chain amino acids;;1.54 %;1.65 %;2%
例如。
这些输入不包含“脏”,例如给出脏格式的例子。
答案 0 :(得分:0)
感谢sln,这是答案:
$scope.$watch