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