<p>嘿,我有一个问题,从我的列表中创建一个所有字符串的列表,匹配正则表达式,以及与DictReader关联的字段名。你知道吗</p>
<p>我在一个字符串数组中循环,并尝试查看每个字符串是否匹配一个模式:</p>
<pre><code> 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]])
</code></pre>
<p>当字符串与模式匹配时,它会将匹配的字符串和csv字段名附加到列表中。你知道吗</p>
<p>这是可行的,但是似乎有一个问题,它将一个看似随机的字段名附加到正确的和预期的匹配regex值。你知道吗</p>
<p>也就是说,如果我的数据</p>
<p><strong>名称、位置、价格</p>
<p>有时正则表达式中的if条件会将字段名位置附加到与price关联的数值上。它似乎没有一个可预测的模式,价值是什么。。。你知道吗</p>
<p><strong>结果:</strong></p>
<p>[['firstitem']、['seconditem']、['thirditem']、['fourthitem'、'27']、['fifthitem'、'201']]</p>
<p>[['firstitem'、'1']、['seconditem']、['thirditem'、'12']、['fourthitem']、['fifthitem']]</p>
<p>等等。。你知道吗</p>
<p>所有的数字都是以正确的顺序出现的,它们只是没有按照我所能理解的模式/顺序排列,所以我不知道为什么它们看起来有点随机。任何帮助都将不胜感激。你知道吗</p>
<p>我认为您可以这样简化代码:</p>
<pre><code> reader = csv.DictReader(file)
for mystr in reader:
for fieldname, value in mystr.items():
if re.search(pattern, value):
data.append([fieldname, value])
</code></pre>
<p>这样,更容易理解</p>