繁体   English   中英

如何替换文本文件中的多行?

[英]How to replace multiple lines in a text file?

我编写了此代码来替换 txt 文件中的多行,以便更正 SQL 查询。

import fileinput

with fileinput.FileInput('C:/Users/thiago.ribeiro/Desktop/Documentos Gerais/Hard_Time6.txt', inplace=True, backup='.bak') as file:
    for line in file:
        print(line.replace("""END

UNION ALL""", """END

UNION ALL )

GROUP BY AC,
TYPE_SERIES,
PN,
QTY_PER_ACFT

UNION ALL


"""), end='')

这是 TXT 文件中的 SQL 查询示例:

    SELECT B.AC,
    B.AC_TYPE ||'-'|| B.AC_SERIES AS "TYPE/SERIES",
    CASE WHEN C.PN = NULL THEN 'DK120' ELSE 'DK120' END AS "PN",
    C.PN AS "PN_ACFT_INVENTORY",
    COUNT (DISTINCT C.SN) AS "Nº OF COMPONENTS INSTALLED",
    CASE WHEN C.PN IN ('DK120', 'ELP-362D', '266E5542-00') THEN 2 ELSE 2 END AS "Qty per ACFT",
    CASE WHEN COUNT (DISTINCT C.SN) = 2 THEN 'OK' ELSE 'DISCREPANCY FOUND' END AS "ACFT Inventory CHECK"

    FROM ODB.AC_MASTER B
    LEFT JOIN ODB.PN_INVENTORY_DETAIL C
    ON C.INSTALLED_AC = B.AC
    AND C.PN IN ('DK120',
    'ELP-362D', '266E5542-00')
    LEFT JOIN (SELECT AC,
    DEFECT_DESCRIPTION,
    CASE WHEN DEFECT_DESCRIPTION LIKE '%REDELIVERY%' THEN 'REDELIVERY' ELSE 'REDELIVERY' END AS "STATUS"

    FROM ODB.DEFECT_REPORT

    WHERE DEFECT_TYPE = 'OOS'

    AND DEFECT_DESCRIPTION LIKE '%REDELIVERY%'
    UNION ALL
    SELECT AC,
    DEFECT_DESCRIPTION,
    CASE WHEN DEFECT_DESCRIPTION LIKE '%CHECK%' THEN 'HEAVY_CHECK' ELSE 'HEAVY_CHECK' END AS "STATUS"

    FROM ODB.DEFECT_REPORT

    WHERE DEFECT_TYPE = 'OOS'

    AND DEFECT_DESCRIPTION LIKE '%CHECK%'

    AND STATUS = 'OPEN') D
    ON D.AC = B.AC

    WHERE B.AC_TYPE ||'-'|| B.AC_SERIES = 'ATR72-600'
    AND B.STATUS = 'ACTIVE' AND D.STATUS IS NULL

    GROUP BY B.AC,
    B.AC_TYPE ||'-'|| B.AC_SERIES,
    C.PN,
    CASE WHEN C.PN = NULL THEN 'DK120' ELSE 'DK120' END

问题是,python 代码似乎没有替换换行符。

我认为您不应该为这个问题逐行阅读您的文件。 并不是 python 不替换换行符,而是因为每行都以换行符结束,所以不能有任何行与您的多行内容相匹配。

您可以改为使用content=file.read()读取整个文件并对content执行替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM