如何将txt文件中的数据合并为一行?

假设一个txt文件里面包含以下数据:

['~#107802:10:aa#~']
['~#105102:12:aa#~']
['~#107747:101:aa#~']
['~#110946:173:aa#~']
['~#108231:14:aa#~']
['~#108227:107:aa#~']
['~#108214:13:aa#~']
['~#107802:206:aa#~']
['~#108248:154:aa#~']
['~#105102:192:aa#~']
['~#107859:154:aa#~']

要求将~#到:中的数字为一样的话,就把:后面的数据添加到原有数据的后面形成一行,最后处理成类似以下格式:

['107802','10:aa#~'],206:aa#~']']
['105102','12:aa#~'],192:aa#~']']
['107747','101:aa#~']']
['110946','173:aa#~']']
['108231','14:aa#~']']
['108227','107:aa#~']']
['108214','13:aa#~']']
['108248','154:aa#~']']
['107859','154:aa#~']']

以下是可以实现上述功能的Python代码:

with open('file.txt', 'r') as f:
    lines = [line.strip() for line in f.readlines()]

result = []
for line in lines:
    num, rest = line.split(':')
    added = False
    for i, res in enumerate(result):
        if res[0] == num:
            result[i][1] = rest.strip('#~') + ',' + res[1].strip('#~') + ']']
            added = True
            break
    if not added:
        result.append([num, rest.strip('#~') + ']'])

print(result)

其中,file.txt是包含原始数据的txt文件名,可以根据实际情况修改。

首先读取文件中的所有行,去除每行的首尾空格,得到一个列表lines

然后,遍历每一行,根据冒号分割成数字和后面的部分,即numrest

接下来,在已有的结果中查找是否存在和当前数字相同的结果,如果存在,则把当前行的后半部分添加到已有结果中该数字对应的结果的后半部分中;如果不存在,则把当前行作为一个新结果添加到已有结果列表中。

最后,输出所有结果的列表。

如何将txt文件中的数据合并为一行?

原文地址: https://www.cveoy.top/t/topic/m8y6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录