簡體   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