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