2016-02-26 53 views
2

我在應用程序中生成一些文本。由於該文本是一個更大的消息的一部分,有時候我需要添加新行,有時沒有:將新行添加到字符串,跨平臺

def get_message(): 
    msg = get_txt(True) 
    msg += get_txt(True) 
    msg += get_txt(False) 
    return msg 

這將返回:

Hello 
Hello 
Hello (no newline here) 

NEWLINE = '\n' # TODO: how to define this cross-platform? Can I use os.linesep? 

def get_txt(add_newline=False): 
    txt = 'Hello' 
    if add_newline: 
     txt += NEWLINE 
    return txt 

如下這可以用於

如何以跨平臺的方式定義NEWLINE?或者更好的是,標準庫(或包含在Python中)是否有一個函數可以在字符串中添加換行符? (不一定在打印時,只需在存儲器中向字符串添加換行符)。使用的換行符應該是python運行的平臺的正確版本

+0

你在代碼註釋中提到你嘗試'os.linesep'? –

+0

@IronFist:我沒有Windows機器可以測試,並且我已經使用'os.linesep'(http://stackoverflow.com/q/21636213/647991)再次看到了引用。我想知道在字符串中嵌入換行符的規範方式,而不打印。我需要的可能是印刷廠在內部使用換行符,但我不確定。 – dangonfast

+0

所以......應該回答......不是......這是一個實現細節,你不需要關注......根據你在編寫文件的平臺,Python將確保結束該行以相應的行結束。 –

回答

4

我一直使用換行符'\n'來表示換行符,儘管windows使用換行符和回車符,但我在Windows上測試過機器(python 3.4)在內存中構建一個字符串,然後將其寫入文件,而在內存中它保留爲單個字符('\n'),但是當寫入文件時,它會轉換爲兩個字符,以便在窗口中顯示正確的行。
到目前爲止,我還沒有遇到一個單獨的圖書館有這個問題。

0

你可以用這個嘗試:

import os 
print(os.linesep)