AEA*_*AEA -1 python csv dictionary key python-2.7
我为这个问题的不良标题道歉,但是很难用代码来解释.我想让我的代码执行以下操作; 如果等级键是2并且数字键是任何(空白,数字或其他),并且如果前一行是等级键1和数字键1则继续到脚本的下一行.
然而,尽管做了很多努力,我似乎无法让代码产生应有的效果.需要注意的代码行是第14行,但我认为最好提供一些背景代码来设置上下文.
Unique Name,Rank,100% OmNTS,Numeric
xyz,1,10.2,1
xyz,2,12.5,-
xyz,3,18.8,2
xyz,4,25.9,
pmz,1,29.8,1
pmz,2,200.9,5
pmz,3,210.9,
pmz,4,250.89,
pmz,5,290.9685,
xyz2,1,10.9,1
xyz2,2,12.59,3
xyz2,3,18.8,2
xyz2,4,25.9,,
pmz2,1,29.8,,
pmz2,2,200.9,5
pmz2,3,210.9,
pmz2,4,250.89,
pmz2,5,290.9685,
Run Code Online (Sandbox Code Playgroud)
for counter, row in enumerate(reader):
counter += 1
if counter != 1:
for field in fields[3:]:
if field == "Numeric" or field == "Rank":
row[field] = row[field] and float(row[field])
if field == "Rank":
row[field] = row[field] and int(row[field])
key = (row['Rank'], row['Numeric'])
previous = entries[row['Unique Name']]
if (key[0] == 2) and (1 <= key[1] <= 50 or key[1] is None) and ((1, 1) in previous):
p = previous[(1, 1)]
print 'test data text {r[Rank]} test {p[Rank]} test {r[100% OmNTS]} test {p[100% OmNTS]} '.format(r=row, p=p)
Run Code Online (Sandbox Code Playgroud)
我们希望在第2行中匹配,其中第3行中的元素(包括计数中的标题行),其中第2行的元素将被存储为先前的.第7行和第12行也是如此,但是这个Key引用会忽略第16行,因为第15行不是(1,1)
test data text 2 test 1 test 12.5 test 10.2
test data text 2 test 1 test 200.9 test 29.8
test data text 2 test 1 test 12.59 test 10.9
Run Code Online (Sandbox Code Playgroud)
非常感谢您花时间看我的问题.AEA
小智 5
您的编码可能出错的一些区域:
None.reader,fields并且entries有,也许里面还有一些bug,以及.我自己尝试使用csv模块:
from csv import DictReader
with open('example.csv') as f:
check = False
for row in DictReader(f):
n = row['Numeric'].replace('-', '')
r = row['Rank']
if check and r == '2' and (not n or 1 <= float(n) <= 50):
s = row['100% OmNTS'], omnts_p
print 'test data text 2 test 1 test %s test %s' % s
elif r == n == '1':
check = True
omnts_p = row['100% OmNTS']
else:
check = False
Run Code Online (Sandbox Code Playgroud)
我希望这是你想要的.它会打印所需的输出:
test data text 2 test 1 test 12.5 test 10.2
test data text 2 test 1 test 200.9 test 29.8
test data text 2 test 1 test 12.59 test 10.9
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |