嘿,我有一个问题,从我的列表中创建一个所有字符串的列表,匹配正则表达式,以及与DictReader关联的字段名。你知道吗
我在一个字符串数组中循环,并尝试查看每个字符串是否匹配一个模式:
reader = csv.DictReader(file)
for mystr in reader:
for i in range(len(mystr)):
if re.search(pattern, list(mystr.values())[i]):
data.append([list(reader.fieldnames)[i],list(mystr.values())[i]])
当字符串与模式匹配时,它会将匹配的字符串和csv字段名附加到列表中。你知道吗
这是可行的,但是似乎有一个问题,它将一个看似随机的字段名附加到正确的和预期的匹配regex值。你知道吗
也就是说,如果我的数据
名称、位置、价格
有时正则表达式中的if条件会将字段名位置附加到与price关联的数值上。它似乎没有一个可预测的模式,价值是什么。。。你知道吗
结果:
[['firstitem']、['seconditem']、['thirditem']、['fourthitem'、'27']、['fifthitem'、'201']]
[['firstitem'、'1']、['seconditem']、['thirditem'、'12']、['fourthitem']、['fifthitem']]
等等。。你知道吗
所有的数字都是以正确的顺序出现的,它们只是没有按照我所能理解的模式/顺序排列,所以我不知道为什么它们看起来有点随机。任何帮助都将不胜感激。你知道吗
给出一个完全人为的csv,如下所示(另存为'测试.csv'):
然后,以下内容将提取包含整数的所有列:
或者,可以使用
if value.strip().isdigit()
作为条件语句,而不必使用regex。你知道吗我认为您可以这样简化代码:
这样,更容易理解
相关问题 更多 >
编程相关推荐