Python多对替换在txt文件中

时间:2015-05-27 21:16:15

标签: python text substitution

我有2个.txt文件,第一个文件组织如下:

MM DD YYYY HH mm

,第二个是这样的:

1:NAME1
2:NAME2
3:NAME3
...

我想要做的是根据.txt 1中的对来替换.txt 2中的每一行,如下所示:

1
1
1
2
2
2
3

有办法做到这一点吗?我正在考虑组织第一个txt删除1:2:3:并将其作为数组读取,然后在范围内创建一个循环(1,txt 1中的行数)然后在txt 2中查找包含" I"并用数组的i元素代替。但我当然不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

罗德里戈评论道。有很多方法可以实现它,但将名称存储在字典中可能是要走的路。

# Read the names
with open('names.txt') as f_names:
    names = dict(line.strip().split(':') for line in f_names)

# Read the numbers
with open('numbers.txt') as f_numbers:
    numbers = list(line.strip() for line in f_numbers)

# Replace numbers with names
with open('numbers.txt', 'w') as f_output:
    for n in numbers:
        f_output.write(names[n] + '\n')

答案 1 :(得分:0)

这应该可以解决问题。它读取第一个文件并将k, v对存储在dict中。该dict用于为第二个文件中找到的每个v输出k

但是....如果你想阻止这些downvotes,最好发布你自己的代码片段来展示你尝试过的东西......现在你的问题是SO&#39部落的红毯子那些在其中没有代码的东西。天啊,他们甚至低估了答案,因为问题中没有代码......

lookup = {}
with open("first.txt") as fifile:
    for line in fifile:
        lookup[line.split[":"][0]] = line.split[":"][1] 

with open("second.txt") as sifile:
    with open("output.txt", "w") as ofile:
        for line in sifile:
            ofile.write("{}\n".format(lookup[line])