我是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的范围,并且添加的字符串不在数组中的正确位置。
你介意给我一些建议吗?
谢谢。
答案 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']