是否可以在Python中打印字符串中的换行符

时间:2014-01-10 20:01:42

标签: python sql string line-breaks

我有一个字符串,我想再次编辑和打印,但保留\ n换行符而不实际破坏该行。举例说明;我想操纵下面的字符串(连续重复3次)并打印出来。当我打印它时,我希望它的格式相同(包括\ 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"

即我不想要:

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 个答案:

答案 0 :(得分: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 :(得分: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