将额外数据附加到文件-python

时间:2013-08-30 21:59:04

标签: python

我很难尝试将额外数据附加到文件中。 重复索引号2次并添加22和23,留下电话号码 在现有的20号线上。 示例

原创

MYFILE:

1,20,323.454.1234,
2,20,212.333.3333,
3,20,212.222.4444,
4,20,850.234.3881,
5,20,850.111.3881,
6,20,510-222-5241,
7,20,510-343-5241,
8,20,678-456-3555,
9,20,678-123-3555,
10,20,123-123-4878,

新文件假设是这样的 mynewfile:

1,20,323.454.1234,
1,22,323.454.1234,
1,23,323.454.1234,
2,20,212.333.3333,
2,22,212.333.3333,
2,23,212.333.3333,
3,20,212.222.4444,
3,22,212.222.4444,
3,23,212.222.4444,
4,20,850.234.3881,
4,22,850.234.3881,
4,23,850.234.3881,
5,20,850.111.3881,
5,22,850.111.3881,
5,23,850.111.3881,
6,20,510-222-5241,
6,22,510-222-5241,
6,23,510-222-5241,
7,20,510-343-5241,
7,22,510-343-5241,
7,23,510-343-5241,
8,20,678-456-3555,
8,22,678-456-3555,
8,23,678-456-3555,
9,20,678-123-3555,
9,22,678-123-3555,
9,23,678-123-3555,
10,20,123-123-4878,
10,22,123-123-4878,
10,20,123-123-4878,

我的代码:

#!/usr/bin/python

import re

myfile = open('myfile', 'r+')
lines = myfile.readlines()
sentences = []
for line in lines:
         if line:
           sentences.insert(line + '22')
     for line in lines:
         if line:
            sentences.insert(line + '23')
myfile.close()



outputfile = open('mynewfile', 'w+')
if len(sentences) > 0:
   for sentence in sentences:
       outputfile.write(sentence)

outputfile.close()

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

只是一些提示,所以你可以自己提出解决方案。 您可以逐行读取输入文件。使用类似的东西:

with open("myfile", "rt") as f, open ("mynewfile", "wt") as g:
  for line in f:
    # split line and generate your two new lines
    print >> g, line
    print >> g, ... # new line 1
    print >> g, ... # new line 2

您需要将每一行分成几部分,然后使用split

答案 1 :(得分:0)

一种方式:

import fileinput

with fileinput.input() as f:
    for line in f:
        print(line, end='')
        fields = line.split(r',', 2)
        for n in [22, 23]:
            fields[1] = n 
            print(','.join(map(str, fields)), end='')

它产生:

1,20,323.454.1234,
1,22,323.454.1234,
1,23,323.454.1234,
2,20,212.333.3333,
2,22,212.333.3333,
2,23,212.333.3333,
3,20,212.222.4444,
3,22,212.222.4444,
3,23,212.222.4444,
4,20,850.234.3881,
4,22,850.234.3881,
4,23,850.234.3881,
5,20,850.111.3881,
5,22,850.111.3881,
5,23,850.111.3881,
6,20,510-222-5241,
6,22,510-222-5241,
6,23,510-222-5241,
7,20,510-343-5241,
7,22,510-343-5241,
7,23,510-343-5241,
8,20,678-456-3555,
8,22,678-456-3555,
8,23,678-456-3555,
9,20,678-123-3555,
9,22,678-123-3555,
9,23,678-123-3555,
10,20,123-123-4878,
10,22,123-123-4878,
10,23,123-123-4878,

答案 2 :(得分:0)

for x in open('myfile.txt'):
    x = x.rstrip()
    L = x.split(',')
    print(x)
    print(L[0], 22, L[2], "\n", sep=',', end='')
    print(L[0], 23, L[2], "\n", sep=',', end='')