2014-01-10 29 views
0

我有一個字符串,我想要編輯並再次打印,但保留了\ n換行符而不實際上斷行。舉一個例子來說明;我想操作下面的字符串(連續重複3次)並打印出來。當我打印它時,我希望它具有相同的格式(包括\ n's),而不是單獨的行。是否可以在Python中的字符串中打印換行符

"left join recommendation_customer_action rca ON rca.analysis_id=a.analysis_id\nleft join zipcode_electric_region reg ON reg.zipcode = addr.zip\nleft join carbon_conversion_factor ccf ON ccf.energy_type_id = aes.energy_type_id AND ccf.region_id = reg.region_id\nwhere (fs_stages.label = \"First Audit\" AND r.recommendation IS NOT NULL) OR (fs_stages.label = \"First Screen\" AND sppc.savings IS NOT NULL) OR (fs_stages.label = \"Queue\") OR (fs_stages.label = \"Disqualified\")\ngroup by a.analysis_id" 

即我不想:

left join recommendation_customer_action rca ON rca.analysis_id=a.analysis_id 
left join zipcode_electric_region reg ON reg.zipcode = addr.zip 

等等

任何幫助表示讚賞!

回答

2

可以使用repr內置打印換行符爲\n

>>> mystr = 'a\nb' 
>>> print mystr 
a 
b 
>>> print repr(mystr) 
'a\nb' 
>>> print repr(mystr)[1:-1] # This will get rid of the apostrophes added by repr 
a\nb 
>>> 
1

使用repr得到'\n'的是,用str.strip或切片去除''返回由repr

>>> s = "left join recommendation_customer_action rca ON rca.analysis_id=a.analysis_id\nleft join zipcode_electric_region reg ON reg.zipcode = addr.zip\nleft join carbon_conversion_factor ccf ON ccf.energy_type_id = aes.energy_type_id AND ccf.region_id = reg.region_id\nwhere (fs_stages.label = \"First Audit\" AND r.recommendation IS NOT NULL) OR (fs_stages.label = \"First Screen\" AND sppc.savings IS NOT NULL) OR (fs_stages.label = \"Queue\") OR (fs_stages.label = \"Disqualified\")\ngroup by a.analysis_id" 

切片:

>>> print repr(s)[1:-1] 
left join recommendation_customer_action rca ON rca.analysis_id=a.analysis_id\nleft join zipcode_electric_region reg ON reg.zipcode = addr.zip\nleft join carbon_conversion_factor ccf ON ccf.energy_type_id = aes.energy_type_id AND ccf.region_id = reg.region_id\nwhere (fs_stages.label = "First Audit" AND r.recommendation IS NOT NULL) OR (fs_stages.label = "First Screen" AND sppc.savings IS NOT NULL) OR (fs_stages.label = "Queue") OR (fs_stages.label = "Disqualified")\ngroup by a.analysis_id 

str.strip

>>> print repr(s).strip("'") 
left join recommendation_customer_action rca ON rca.analysis_id=a.analysis_id\nleft join zipcode_electric_region reg ON reg.zipcode = addr.zip\nleft join carbon_conversion_factor ccf ON ccf.energy_type_id = aes.energy_type_id AND ccf.region_id = reg.region_id\nwhere (fs_stages.label = "First Audit" AND r.recommendation IS NOT NULL) OR (fs_stages.label = "First Screen" AND sppc.savings IS NOT NULL) OR (fs_stages.label = "Queue") OR (fs_stages.label = "Disqualified")\ngroup by a.analysis_id 

第二個選擇是使用str.replace和替換'\n''\\n'

>>> print s.replace('\n', '\\n') 
left join recommendation_customer_action rca ON rca.analysis_id=a.analysis_id\nleft join zipcode_electric_region reg ON reg.zipcode = addr.zip\nleft join carbon_conversion_factor ccf ON ccf.energy_type_id = aes.energy_type_id AND ccf.region_id = reg.region_id\nwhere (fs_stages.label = "First Audit" AND r.recommendation IS NOT NULL) OR (fs_stages.label = "First Screen" AND sppc.savings IS NOT NULL) OR (fs_stages.label = "Queue") OR (fs_stages.label = "Disqualified")\ngroup by a.analysis_id 
相關問題