Python Multiline String mengubah indentasi
Saya sedang mengerjakan Otomasi dengan Python dan Selenium. Saya harus menempelkan satu blok kode SQL & Java Script di dalam Area Teks di situs web. Saya menggunakan banyak cara untuk mengirim string, tetapi itu mengubah indentasi. Apakah ada cara untuk mengirim kode / string tanpa ada perubahan pada indentasi? Saya menggunakan semua di bawah dan tidak ada yang berhasil,
textwrap.dedent(prdrsql1)
textwrap.dedent(prdrsql1).lstrip()
(prdrsql1).lstrip()
(prdrsql1).strip()
Kode:
prdrsql1 = ("""
SELECT DISTINCT CAST(q2.SubjectId AS varchar(32)) as SubjectId, q2.SubjectNum,
'A' as ItemOid,
q1.B as VisitId,
q1.[C] as VisitRepeatKey,
q1.[D] AS FormOid,
q1.E as FormRepeatKey,
'Y' as Data
FROM Table.A.ABC q2 with (NOLOCK)
Right Join (
select hashkey, SubjectNum,
(CASE WHEN C is null THEN 'SUBJECT' ELSE [D] END) AS
[D],
(CASE WHEN G is null THEN 'SUBJECT' ELSE [G] END) AS
[G],
FormOID, [DD], AB,ABC
from Table.A.ABC with (NOLOCK) where abc=123
) q1
on q1.abc = q2.qbc
AND q1.AA = 1 and AAA=1""")
Keluaran:
Outputnya
Karena itu kompiler tidak mengkompilasi kode dan memberikan kesalahan.
Saya perlu mengirim SQL & Java Script ini ( saya memiliki kolom teks lain tempat saya mengirim kode JS yang memiliki kondisi For Loops dan IF ) Kode tanpa mengubah Indentasi atau setidaknya memulai semua baris dari awal baris . Bisakah seseorang memberikan masukan Anda?
Compiler mengkompilasi kode hanya jika kodenya seperti di bawah ini.
Terima kasih, Sanjay.
Jawaban
Solusi untuk masalah ini sangat sederhana. Anda baru saja menyalin dan menempelkan SQL Query dengan harapan itu akan berfungsi di sini apa adanya. Masalahnya di Python adalah peka terhadap indentasi. indentasi yang salah akan menyebabkan masalah yang tidak diinginkan. Sekarang, di sisi lain SQL Queries dan JavaScript Code, keduanya tidak sensitif terhadap indentasi. Ini tergantung pada; (titik koma) untuk memutuskan garis. Ini berarti bahwa meskipun Anda menetapkan 300 perintah dalam satu baris yang memisahkan masing-masing dengan a; (titik koma) perintah akan dijalankan tanpa gangguan. Tetapi hal yang sama tidak akan berfungsi di sini dalam kasus python.
Jika Anda mencoba kode di bawah ini, ini akan bekerja untuk Anda dan Anda akan mendapatkan hasil yang diharapkan.
prdrsql1 = ("SELECT DISTINCT CAST(q2.SubjectId AS varchar(32)) as SubjectId, q2.SubjectNum, 'A' as ItemOid, q1.B as VisitId, q1.[C] as VisitRepeatKey, q1.[D] AS FormOid, q1.E as FormRepeatKey, 'Y' as Data FROM Table.A.ABC q2 wit (NOLOCK) Right Join ( select hashkey, SubjectNum, (CASE WHEN C is null THEN 'SUBJECT' ELSE [D] END) AS [D], (CASE WHEN G is null THEN 'SUBJECT' ELSE [G] END) AS [G], FormOID, [DD], AB,ABCfrom Table.A.ABC with (NOLOCK) where abc=123) q1 on q1.abc = q2.qbc AND q1.AA = 1 and AAA=1")
Coba cetak dan verifikasi output variabel ini di Klien SQL Anda sebelum benar-benar menggunakannya.