【问题标题】:Python Multiline String changes the indentationPython多行字符串更改缩进
【发布时间】:2021-01-01 11:14:24
【问题描述】:

我正在使用 Python 和 Selenium 进行自动化。 我必须在网站的文本区域中粘贴一段 SQL 和 Java 脚本代码。 我使用了很多方法来发送字符串,但它改变了缩进。 有没有办法在不更改缩进的情况下发送代码/字符串? 我使用了以下所有内容,但没有任何效果,

textwrap.dedent(prdrsql1)
textwrap.dedent(prdrsql1).lstrip()
(prdrsql1).lstrip()
(prdrsql1).strip()

代码:

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""")

输出:

The is the output

因此,编译器不会编译代码并给出错误。

我需要发送这些 SQL 和 Java 脚本(我有另一个文本字段,我必须发送具有 For 循环和 IF 条件的 JS 代码)代码而不改变缩进或至少从行首开始所有行。 有人可以提供您的意见吗?

The Compiler compiles the codes only if the code is as below.

谢谢, 桑杰。

【问题讨论】:

    标签: java sql python-3.x selenium browser-automation


    【解决方案1】:

    这个问题的解决方法很简单。您只需复制粘贴的 SQL 查询,希望它可以在这里正常工作。 Python 的特点是缩进敏感。错误的缩进会导致意想不到的麻烦。现在,另一方面,SQL 查询和 JavaScript 代码都对缩进不敏感。这些取决于 ; (分号)换行。这意味着即使您在一行中指定了 300 个命令,每个命令都用 ; 分隔。 (分号)命令将毫不费力地执行。但在 python 的情况下,同样的方法在这里不起作用。

    如果您尝试以下代码,这将适用于您,您将获得预期的结果。

    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")
    

    在实际使用之前,尝试在 SQL 客户端中打印并验证此变量的输出。

    【讨论】:

      猜你喜欢
      • 2020-04-14
      • 2023-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2011-03-22
      • 2011-01-31
      • 1970-01-01
      相关资源
      最近更新 更多