python匹配-求助
本帖最后由 poppy章鱼 于 2022-3-4 16:08 编辑有两个文件
1.txt
aa1 bb1
dd1 cc1
ee1 ff1
kk1 gg1
2.txt
aa1 bb1 0.1
cc1 dd1 0.3
ee1 ff1 0.2
gg1 kk1 0.5
输出需求:
result.txt
aa1 bb1 0.1
dd1 cc1 0.3
ee1 ff1 0.2
kk1 gg1 0.5
有1.txt,和2.txt 两个文件
如果2.txt每行第一列,第二列和1.txt每行第一列,第二列相同则按原来的输出
如果2.txt每行第一列,第二列和1.txt第二列,第一列相同,则输出需要调整为第二列,第一列,第三列
感激。 a = open('1.txt')
b = open('2.txt')
c = open('result.txt', 'w')
for i in a:
c.write(i.rstrip('\n') + b.readline())
a.close()
b.close()
c.close() f1 = open("1.txt")
f2 = open("2.txt")
f3 = open("result.txt", "w")
# 去掉空格 和换行
b =
a =
result = []
for each_1 in a:
start = each_1[:3]
end = each_1
for each_2 in b:
"""
如果2.txt每行第一列,第二列和1.txt每行第一列,第二列相同则按原来的输出
如果2.txt每行第一列,第二列和1.txt第二列,第一列相同,则输出需要调整为第二列,第一列,第三列
"""
if each_2.startswith(start) or each_2.startswith(end):
if each_2 == end or each_2 == start:
result.append(start + " "*8 + end + " "*8 +
each_2)
for i in result:
f3.writelines(i+"\n")
print(i)
f1.close()
f2.close()
f3.close()
aa1 bb1 0.1
dd1 cc1 0.3
ee1 ff1 0.2
kk1 gg1 0.5 isdkz 发表于 2022-3-4 16:46
感谢您的帮助,我描述过于简单了。这个脚本还解决不了我的实际数据{:10_266:}
1.txt
184hefo|add.HEFO.ctg0001.559 184hefo|add.HEFO.ctg0002.26
184hefo|HEFO.ctg0001.951 184hefo|HEFO.ctg0002.67
184hefo|HEFO.ctg0001.953 184hefo|add.HEFO.ctg0002.27
184hefo|add.HEFO.ctg0002.28 184hefo|add.HEFO.ctg0001.566
184hefo|add.HEFO.ctg0001.576 184hefo|HEFO.ctg0002.70
2.txt
184hefo|add.HEFO.ctg0001.559 184hefo|add.HEFO.ctg0002.26 1.39753
184hefo|HEFO.ctg0001.951 184hefo|HEFO.ctg0002.67 1.64152
184hefo|HEFO.ctg0001.953 184hefo|add.HEFO.ctg0002.27 1.67177
184hefo|add.HEFO.ctg0001.566 184hefo|add.HEFO.ctg0002.28 1.73668
184hefo|HEFO.ctg0002.70 184hefo|add.HEFO.ctg0001.576 2.26327
我的实际数据长这样,不好意思。 感谢您的帮助,我描述过于简单了。这个脚本还解决不了我的实际数据{:10_266:}
1.txt
184hefo|add.HEFO.ctg0001.559 184hefo|add.HEFO.ctg0002.26
184hefo|HEFO.ctg0001.951 184hefo|HEFO.ctg0002.67
184hefo|HEFO.ctg0001.953 184hefo|add.HEFO.ctg0002.27
184hefo|add.HEFO.ctg0002.28 184hefo|add.HEFO.ctg0001.566
184hefo|add.HEFO.ctg0001.576 184hefo|HEFO.ctg0002.70
2.txt
184hefo|add.HEFO.ctg0001.559 184hefo|add.HEFO.ctg0002.26 1.39753
184hefo|HEFO.ctg0001.951 184hefo|HEFO.ctg0002.67 1.64152
184hefo|HEFO.ctg0001.953 184hefo|add.HEFO.ctg0002.27 1.67177
184hefo|add.HEFO.ctg0001.566 184hefo|add.HEFO.ctg0002.28 1.73668
184hefo|HEFO.ctg0002.70 184hefo|add.HEFO.ctg0001.576 2.26327
我的实际数据长这样,是在不好意思。 poppy章鱼 发表于 2022-3-4 17:20
感谢您的帮助,我描述过于简单了。这个脚本还解决不了我的实际数据
是这样?
import pandas as pd
df1 = pd.read_csv('1.txt', sep=r'\s+', header=None, names=['a','b'])
print(df1)
df2 = pd.read_csv('2.txt', sep=r'\s+', header=None, names=['a','b','val'])
print(df2)
# 情况一,则 不变
df_s = df2[ (df1.a==df2.a) & (df1.b==df2.b)]
# 情况二,则调换位置
df_d = df2[ (df1.a==df2.b) & (df1.b==df2.a)][['b', 'a', 'val']]
df_d.columns = ['a', 'b', 'val']
res = pd.concat()
print("----------------\n结果:\n", res)
res.to_excel('result_data.xlsx', index=False)
阿奇_o 发表于 2022-3-4 18:57
是这样?
您好,谢谢帮助,但是报错我不知道怎么修改
a b
0aa1bb1
1dd1cc1
2ee1ff1
3kk1gg1
a bval
0aa1bb10.1
1cc1dd10.3
2ee1ff10.2
3gg1kk10.5
Traceback (most recent call last):
File "test1.py", line 14, in <module>
res = pd.concat()
NameError: name 'df_s' is not defined
poppy章鱼 发表于 2022-3-4 19:20
您好,谢谢帮助,但是报错我不知道怎么修改
。。没人可以手把手教你所有东西……
阿奇_o 发表于 2022-3-4 20:21
。。没人可以手把手教你所有东西……
谢谢,我自己琢磨一下 阿奇_o 发表于 2022-3-4 20:21
。。没人可以手把手教你所有东西……
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pandas as pd
df1 = pd.read_csv('1.txt', sep=r'\s+', header=None, names=['a','b'])
print(df1)
df2 = pd.read_csv('2.txt', sep=r'\s+', header=None, names=['a','b','val'])
print(df2)
# 情况一,则 不变
df_s =[]
df_d =[]
df_s = df2[ (df1.a==df2.a) & (df1.b==df2.b)]
# 情况二,则调换位置
df_d = df2[ (df1.a==df2.b) & (df1.b==df2.a)][['b', 'a', 'val']]
df_d.columns = ['a', 'b', 'val']
res = pd.concat()
print("----------------\n:\n", res)
res.to_excel('result_data.xlsx', index=False)
结果:
a b
0184hefo|add.HEFO.ctg0001.559 184hefo|add.HEFO.ctg0002.26
1 184hefo|HEFO.ctg0001.951 184hefo|HEFO.ctg0002.67
2 184hefo|HEFO.ctg0001.953 184hefo|add.HEFO.ctg0002.27
3 184hefo|add.HEFO.ctg0002.28184hefo|add.HEFO.ctg0001.566
4184hefo|add.HEFO.ctg0001.576 184hefo|HEFO.ctg0002.70
a b val
0184hefo|add.HEFO.ctg0001.559 184hefo|add.HEFO.ctg0002.261.39753
1 184hefo|HEFO.ctg0001.951 184hefo|HEFO.ctg0002.671.64152
2 184hefo|HEFO.ctg0001.953 184hefo|add.HEFO.ctg0002.271.67177
3184hefo|add.HEFO.ctg0001.566 184hefo|add.HEFO.ctg0002.281.73668
4 184hefo|HEFO.ctg0002.70184hefo|add.HEFO.ctg0001.5762.26327
----------------
:
a b val
0184hefo|add.HEFO.ctg0001.559 184hefo|add.HEFO.ctg0002.261.39753
1 184hefo|HEFO.ctg0001.951 184hefo|HEFO.ctg0002.671.64152
2 184hefo|HEFO.ctg0001.953 184hefo|add.HEFO.ctg0002.271.67177
3 184hefo|add.HEFO.ctg0002.28184hefo|add.HEFO.ctg0001.5661.73668
4184hefo|add.HEFO.ctg0001.576 184hefo|HEFO.ctg0002.702.26327
可以了,再次感谢帮助,我会努力学习代码的
页:
[1]