如何使用for循环将字符串追加到数组中的特定位置

时间:2020-09-18 15:56:21

标签: python linux

我是python和Linux的新手。我尝试通过for循环将字符串追加到数组中的特定位置时发现问题。
这是我工作的简化说明。

这是我的输入文件1:
a,b,c,d,e,f

输入文件2:
名称1,a,b,d,e
name2,b,e,f

我想使输出文件中相同的字母位于同一列,如下所示:

  a,b,c,d,e,f
  name1,a,b,0,d,e,0
  name2,0,b,0,0,e,f

我搜索Linux脚本,但到目前为止我找不到合适的脚本。然后,我尝试在python中使用NumPy数组,但是只有np.insert或np.append函数,但它们似乎不适合我的情况。
以下是我处理过的python脚本

    import numpy as np
    header = np.loadtxt("file1.txt", dtype= str, delimiter=',')
    lines = np.loadtxt("file2.txt", dtype= str, delimiter=',')
    ARG = np.empty([2,7], dtype=str)
    for x, line in enumerate(lines):
       for i in line:
          for y, j in enumerate(header):
             if i == j:
               np.insert(ARG, y, i, axis=x)
               print(ARG)
             else:
               np.insert(ARG, y, 0, axis=x)
    np.savetxt('test.csv', ARG, delimiter=',')

输出显示类似IndexError的错误:索引3超出了大小为2的轴0的范围,并且添加的字符串不在数组中的正确位置。 你介意给我一些建议吗?
谢谢。

1 个答案:

答案 0 :(得分:0)

尝试一下。 insert函数在这里起作用:

my_list1 = ['name1','a','b','d','e']
my_list2 = ['name2','b','e','f']

my_list1.insert(3,0)
my_list1.insert(7,0)

my_list2.insert(1,0)
my_list2.insert(4,0)
my_list2.insert(5,0)
print(my_list1)
print(my_list2)

输出:

['name1', 'a', 'b', 0, 'd', 'e', 0]
['name2', 0, 'b', 'e', 0, 0, 'f']