浏览数据

时间:2017-06-23 10:31:43

标签: python python-2.7

所以我遇到了问题。我必须浏览一个充满参数的文件(大约40.000)并更改少量特定参数。

我已经找到了一种有效的方法,我正在扫描文件中是否有与我想要更改的值对应的唯一行,并将该行的位置放在列表中。我想要改变的线总是与那些独特线相同的距离。

如果我只改变线条(虽然可能不优雅或快速),这很有效,但下一步会在文件中加入更多行(我可以输入一个常量值或列表有一堆不同的价值观。)

我的解决方案是我开始将这些列表从文件的末尾放到开头(因为我不会丢失任何相对位置,我仍然需要更改)或者为每个位置添加偏移量我添加一个与列表长度相对应的列表。

那么,还有更优雅/高效的解决方案吗?

免责声明:我可能是python的新手,习惯于c / c ++,所以我可能想得太多c / c ++

编辑:

我用来找到我需要的行的代码:

values = [1, 2, 3, 4]
ref_lines = []
lines = []
offset = 4

input_data = open("Input.txt", "r")
data = input_data.readlines()
input_data.close()

pos = 1
while pos < len(value_flow_left_p1) + 1:
    counter = 1
    num = "Unique_Reference{}\n".format(pos)
    for line in data:
        if num == line:
            break
        counter +=1
    ref_lines.append(counter - 1)
    pos += 1

for lines in ref_lines:
    counter = lines + 1
    num = "Start_of_Data_after_Reference\n"
    while counter < len(data) - 1:
        if data[counter] == num:
            lines.append(counter + offset)
            break
        counter += 1

(我知道,从技术上来说,我可以像搜索&#34; Start_of_Data_after_Reference&#34;一样搜索相关的行,但是&#34; Start_of_Data_after_Reference&#34;只能有两个不同的名字,而数据我想改变有十几个不同的名字)

编辑2: 当前: 输入:

Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
Value I want to change
Dummy 6

输出:

Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
Changed Value
Dummy 6

新:

输入:

Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
Array I want to change:
    1
    2
Dummy 6

输出:

Unique_Reference1
Dummy 1
Dummy 2
Start_of_Data_after_Reference
Dummy 3
Dummy 4
Dummy 5
New Array:
    new Number 1
    new Number 2
    new Number 3
    new Number 4    
Dummy 6

在这个40.000行文件中约有30次这样的事情。

0 个答案:

没有答案