2013-07-05 54 views
0

我正在從文本文件中獲取輸入,並嘗試在文本遇到「\ n」字符時分割文本,但它不分割任何東西。我試過它在標籤和空格,它完美的作品。出於某種原因,它不適用於換行符。這與我得到字符串的方式有關嗎?我將文件傳送到程序中。當我給同樣的代碼行嘗試IDLE時,它工作正常。在python中使用.split()方法

t= input("input string : ") 
... 


tps = t.split('\n') 
print(tps) 
+1

當時在Windows機器上創建的文件?如果是這樣,行結束可能是'\ r \ n' –

回答

0

分裂的換行符的多行字符串,您通常會使用str.splitlines()代替,它可以處理不同的換行符約定:

>>> 'Test\r\nlines\nall mixed\r'.splitlines() 
['Test', 'lines', 'all mixed'] 

注意input()只給你第一線任何案件;對於多行輸入你可能想從sys.stdin,而不是閱讀:

for line in sys.stdin: 
    # handle a line 

或讀線在一個循環:

while True: 
    line = input() 
+1

分割'\ n'仍然會分裂,但OP說「它不分割任何東西」。 – RichieHindle

+0

@RichieHindle:如果使用'\ r',它不會分割。不太可能,我會批准你,但仍然如此。 –

+1

您需要一臺時間機器(或者一個正常工作的MacOS <= 9盒,以較難的爲準)。 :-) – RichieHindle

3

input()只讀取一行。你需要在一個循環中運行它,讀線在同一時間:

try: 
    while True: 
     t = input("input string : ") # Or raw_input for Python 2 
     print t.replace('e', 'X') 
except EOFError: 
    pass 

運行這個例子作爲python x.py < x.py和它打印:

input string : try: 
input string :  whilX TruX: 
input string :   t = raw_input("input string : ") 
input string :   print t.rXplacX('X', 'X') 
input string : XxcXpt EOFError: 
input string :  pass 
input string : 
+0

真的這是答案?!! –

+0

@GrijeshChauhan:爲什麼不呢? –

+0

@MartijnPieters其實我的問題是在OP –