[英]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.