簡體   English   中英

如何從Python中的字符串中刪除換行符和縮進?

[英]How to remove newlines and indents from a string in Python?

在我的Python腳本中,我有一條永遠持續運行的SQL語句,如下所示:

query = """
    SELECT * FROM
        many_many
        tables
    WHERE
        this = that,
        a_bunch_of = other_conditions
"""

像單行一樣閱讀的最佳方法是什么? 我嘗試了這個:

def formattedQuery(query):
    lines = query.split('\n')

    for line in lines:
        line = line.lstrip()
        line = line.rstrip()

    return ' '.join(lines)

它確實刪除了換行符,但沒有縮進空格。 請幫忙!

您可以這樣做:

query = " ".join(query.split())

但是,如果您的SQL查詢包含帶空格或制表符的字符串(例如, select * from users where name = 'Jura X'它將不能很好地工作。 這是使用string.replace或正則表達式的其他解決方案的問題。 因此您的方法還不錯,但是您的代碼需要修復。

函數的實際問題是什么-您返回原始函數,放棄lsplit和rsplit的返回值。 您可以這樣解決:

def formattedQuery(query):
  lines = query.split('\n')
  r = []

  for line in lines:
    line = line.lstrip()
    line = line.rstrip()
    r.append(line)

  return ' '.join(r) 

另一種方法是:

def formattedQuery(q): return " ".join([s.strip() for s in q.splitlines()])

另一行:

>>> import re

>>> re.sub(r'\s', ' ', query)

'SELECT * FROM many_many tables WHERE this = that, a_bunch_of = other_conditions'

這會將字符串query中的所有空格字符替換為單個' '空格。

string.translate可以刪除字符(只需為第二個參數提供None,這樣就不會轉換字符):

import string
string.translate(query, None, "\n\t")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM