Python 要在文件列中找到两个数字之间的差异?
考虑一个5列0-5的输入文件:Python 要在文件列中找到两个数字之间的差异?,python,Python,考虑一个5列0-5的输入文件: 1 0 937 306 97 3 2 164472 75 17 81 3 3 197154 35268 306 97 3 4 310448 29493 64 38 1 5 310541 29063 64 38 1 6 310684 33707 64 38 1 7 319091 47451 16 41 1 8 319101 49724 16 41 1 9 32
1 0 937 306 97 3
2 164472 75 17 81 3
3 197154 35268 306 97 3
4 310448 29493 64 38 1
5 310541 29063 64 38 1
6 310684 33707 64 38 1
7 319091 47451 16 41 1
8 319101 49724 16 41 1
9 324746 61578 1 5 1
10 324939 54611 1 5 1
对于第二列i,e列10164472197154------需要找到不同的b/w编号,以便第1列应为0164472-0197154-164472,uuuuuuuuu_uuuu_uuuuuuo016447232682
输出文件必须仅更改column1值所有其他值必须与输入文件保持相同:
1 0 937 306 97 3
2 164472 75 17 81 3
3 32682 35268 306 97 3
4 113294 29493 64 38 1
5 93 29063 64 38 1
6 143 33707 64 38 1
7 8407 47451 16 41 1
8 10 49724 16 41 1
9 5645 61578 1 5 1
10 193 54611 1 5 1
如果有人能推荐一个python代码来实现这一点,那将是非常有帮助的
实际上,我试图将所有列追加到列表中,并找到column2的差异,然后再次写回另一个文件。但我提出的输入文件只是一个示例,整个输入文件包含50000行,因此我的尝试失败
我尝试的尝试代码如下所示:
import sys
import numpy
old_stdout = sys.stdout
log_file = open("newc","a")
sys.stdout = log_file
a1 = []; a2 = []; a2f = []; v = []; a3 = []; a4 = []; a5 = []; a6 = []
with open("newfileinput",'r') as f:
for line in f:
job = map(int,line.split())
a1.append(job[0])
a3.append(job[2])
a4.append(job[3])
a5.append(job[4])
a6.append(job[5])
a2.append(job[1])
v = [a2[i+1]-a2[i] for i in range(len(a2)-1)]
print a1
print v
print a3
print a4
print a5
print a6
sys.stdout = old_stdout
log_file.close()
现在,从包含6个列表的代码newc的输出文件,我把它一个接一个地写进一个文件中……这很耗时效率不高
因此,如果有人能建议一种更简单的方法,那将是很有帮助的………不要因为好玩就否决我
import re
from time import sleep
p = re.compile(r'\s+')
data = '''1 0 937 306 97 3
2 164472 75 17 81 3
3 197154 35268 306 97 3
4 310448 29493 64 38 1
5 310541 29063 64 38 1
6 310684 33707 64 38 1
7 319091 47451 16 41 1
8 319101 49724 16 41 1
9 324746 61578 1 5 1
10 324939 54611 1 5 1\n''' * 5000
data = data.split('\n')[0:-1]
data = [p.split(one) for one in data]
data = [map(int, one) for one in data]
def list_diff(a, b):
temp = a[:]
temp[1] = a[1] - b[1]
return temp
result = [
data[0],
]
for i, _ in enumerate(data):
if i < len(data) - 1:
result.append(list_diff(data[i+1], data[i]))
for i, one in enumerate(result):
one[0] = i+1
print one
sleep(0.1)
试试这个。如果有任何问题或您希望我解释任何代码,请告诉我:
import sys
log_file = open("newc.txt","a")
this_no, prev_no = 0, 0
with open("newfileinput.txt",'r') as f:
for line in f:
row = line.split()
this_no = int(row[1])
log_file.write(line.replace(str(this_no), str(this_no - prev_no)))
prev_no = this_no
log_file.close()
我可以建议你尝试一下,并张贴你的尝试,即使你认为你可能会有一些距离。此外,请确认您的文本文件中使用了什么分隔符,即各列之间是否仅用空格、逗号等分隔。@ChrisProsser各列之间用空格分隔,以获取更多信息。我在下面贴了一个答案。@jhon cooper你能帮忙吗