python - 如何在Python中迭代地向列添加特定值

标签 python loops

我有一行具有不同的列,对于一个特定列(第 2 列),我想迭代地添加另一列(第 12 列,除 0 之外)的一些值。我能够对第一个列执行此操作,但不能对其余列执行此操作。这是该行的示例

A01     5729384 5730870 Bra1000071      117     -       5729384 5730870 255,0,0 4       281,252,145,229 0,380,1030,1257

这是所需的输出

A01     5729764 5730870 Bra1000071      117     -       5729384 5730870 255,0,0 4       281,252,145,229 0,380,1030,1257
A01     5730794 5730870 Bra1000071      117     -       5729384 5730870 255,0,0 4       281,252,145,229 0,380,1030,1257
A01     5732051 5730870 Bra1000071      117     -       5729384 5730870 255,0,0 4       281,252,145,229 0,380,1030,1257

这是我的伪代码

with open('velvet.test.bed') as fh_in:
    for line in fh_in:
        line = line.strip().split()
        x1 = line[11].split(',')
        print x1
        for j in x1:
            print j
            if j!= "0":
                next
                y1 = int(line[1]) + int(j)
                test = line[0], " " + str(y1) + " " + " ".join(line[2:])
                print test

这是我得到的输出...

A01 5729764 5730870 Bra1000071 117 - 5729384 5730870 255,0,0 4 281,252,145,229 0,380,1030,1257
A01 5730414 5730870 Bra1000071 117 - 5729384 5730870 255,0,0 4 281,252,145,229 0,380,1030,1257
A01 5730641 5730870 Bra1000071 117 - 5729384 5730870 255,0,0 4 281,252,145,229 0,380,1030,1257

最佳答案

给你:

>>> a = "A01     5729384 5730870 Bra1000071      117     -       5729384 5730870 255,0,0 4       281,252,145,229 0,380,1030,1257"
>>> a = a.split()
>>> add_num = list(map(int,a[-1].split(',')[1:]))   #split with whitespace and taken last element, removed 0 and using map to convert them to int
>>> for i in range(len(add_num)):
...     print(" ".join([b[0]] + [str(int(b[1])+sum(add_num[:i+1]))] + b[2:]))
... 
A01 5729764 5730870 Bra1000071 117 - 5729384 5730870 255,0,0 4 281,252,145,229 0,380,1030,1257
A01 5730794 5730870 Bra1000071 117 - 5729384 5730870 255,0,0 4 281,252,145,229 0,380,1030,1257 
A01 5732051 5730870 Bra1000071 117 - 5729384 5730870 255,0,0 4 281,252,145,229 0,380,1030,1257

您的代码将如下所示:

f = open('file')
for a in f:
    a = a.split()
    add_num = list(map(int,a[-1].split(',')[1:]))
    for i in range(len(add_num)):
        print(" ".join([b[0]] + [str(int(b[1])+sum(add_num[:i+1]))] + b[2:]))

关于python - 如何在Python中迭代地向列添加特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27164265/

相关文章:

python - 连接包含列表的两列python

javascript - 迭代矩形的周长

ruby - 通过 ruby​​ 循环并列出来自 Tinytds 的 2 列数据库表,其中 column1 值作为标题,column2 值作为列表

c - 如何动态获取整数输入并让循环在按回车键时终止?

java - 写入数组

python - 使用python从数据库的多个表中提取多个值

python - 为什么这段python代码在linux下可以运行,而在windows下却不行呢?

python - 在棋盘 OpenCV 中检测正方形

python - 从 Django 下载的 docx 文件已损坏

javascript - HTML5 Canvas 图像过滤器滞后 (JavaScript)