Читать из source.sql написать в destiantion.sql со скриптом python? - PullRequest
1 голос
/ 27 ноября 2009

У меня есть файл source.sql

INSERT INTO `Tbl_ABC` VALUES (1, 0, 'MMB', '2 MB INTERNATIONAL', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 12, '3D STRUCTURES', '3D STRUCTURES', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 0, '2 STRUCTURES', '2D STRUCTURES', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 111, '2D STRUCTURES', '3D STRUCTURES', NULL, NULL, 1)

Я собираюсь написать новый файл с именем destination.sql. Он будет содержать: Новый файл будет игнорировать

`INSERT INTO `Tbl_ABC` VALUES (1, dont wirte if !=0, 'MMB', '2 MB INTERNATIONAL', NULL, NULL, don't write if !=0)

Мой sql может входить в систему, чем этот. Но положение - это держать в целом. В этом случае первый номер 0 в позиции [1] а второй 0 в позиции [6] (начальный отсчет от 0)

Что результаты должны быть такими.

INSERT INTO `Tbl_ABC` VALUES (1, 0, 'MMB', '2 MB INTERNATIONAL', NULL, NULL, 0)
INSERT INTO `Tbl_ABC` VALUES (2, 0, '2 STRUCTURES', '2D STRUCTURES', NULL, NULL, 0)

Кто-нибудь здесь Может помочь мне найти способ отформатировать файл source.sql и написать новый файл. destination.sql

Спасибо ..

Ответы [ 3 ]

1 голос
/ 27 ноября 2009

Примерно так:

import re

RX = re.compile(r'^.*?\(\d+,\s0,.*\s0\)\s*$')

outfile = open('destination.sql', 'w')
for ln in open('source.sql', 'r').xreadlines():
    if RX.match(ln):
        outfile.write(ln)
1 голос
/ 27 ноября 2009

Вы можете читать построчно и проверять, заканчивается ли он 0), и сопоставлять с регулярным выражением для другого.

import re
dest=open("destination.sql","w+")
for line in open("source.sql","r"):
    if line.strip().endswith("0)") and re.search("\(\d+, 0,",line):
        dest.write(line)
0 голосов
/ 27 ноября 2009

Мой sql может входить в систему, чем этот. Но положение - это держать в целом. В этом случае первое число 0 в позиции [1] и второе 0 в позиции [6] (начальный отсчет от 0)

С.Марк, фвиктор Я пробовал вот так

импорт ре

RX = re.compile(r'^.*?\(\d+,\s0,.*\s0\)\s*$')

outfile = open('destination.sql', 'w')
for ln in open('source.sql', 'r').xreadlines():
    replace1 = ln.replace("INSERT INTO `Tbl_ABC` VALUES (", "")
    replace2 = replace1.replace(")", "")
    list_replace = replace2.split(',')
    #print list_replace
    #print '%s ,%s' % (list_replace[1], list_replace[6])
    if list_replace[6]==0 and list_replace[1] == 0:
        #start write line to destination.sql!!!!!!!! NEED HELP
        #if RX.match(ln):
        outfile.write(ln)

(2, x1, «2D СТРУКТУРЫ», «2D СТРУКТУРЫ», NULL, NULL, x6, 15, 2, «», NULL, NULL, NULL, NULL, «2D СТРУКТУРЫ», «MAILLOT 12/08 / 05 ', -1,' tata 20/05/02 ', 0, NULL, 0, NULL, NULL)

Конечно, мне не нужно писать в destination.sql, если в этом случае позиции [1]! = 0 и позиции [6]! = 0 равны x1 и x6. спасибо за ваш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...