我有一个字符串,我想再次编辑和打印,但保留\ 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
等...
感谢任何帮助!
答案 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