2015-06-26 48 views
0

我想對用戶輸入有關分隔符並使用它來拆分數據。 我想到的代碼行應該是這個樣子:拆分用戶輸入

my_delimiter = raw_input("write down the delimiter of your file(e.g. ','): ") 
for line in file: 
    line2 = line.split(my_delimiter) 
    print line2 
    main_data.append(line2) 

然後我的樣本輸入應該是這樣

寫下你的文件的分隔符(如「」):「\ t '

和輸出應該像

['age', 'prescript', 'astigmatic', 'tearRate\n'] 
['young', 'myope', 'no', 'reduced', 'no lenses\n'] 

但它仍然是一樣的。 但它不起作用。它不會按照我希望的那樣用製表符或逗號分隔。 請幫我弄清楚這一點。

+0

能否請您修復縮進的問題,並讓我們知道一個樣本輸入你正在給它不工作和預期的輸出? –

+0

你的文件中是否有實際的'\ t'? – putvande

+0

您是否要求我們幫助解決輸入數據中的問題? –

回答

0

如果您在raw_input中輸入值'\ t',它會將它們轉換爲具有2個ASCII字符的str'\ t'。它不會根據需要將'\ t'轉換爲製表符。 例如如果你知道你會得到輸入「\ t」和你希望把它變成製表符

my_delimiter = my_delimiter.replace('\\t', '\t') 

這將其轉換爲實際的製表符。但是,您必須對所有轉義字符(如'\ r'和'\ n'等)進行操作。你應該做的是要求由','分隔的字符的ascii值。在這種情況下,請求'9'的ascii值並將其轉換爲int(),然後轉換爲chr(),它應該可以工作。

1

如果用戶輸入\t這將是未來的\\t反斜槓將逃脫,它可以解釋爲blackslash ttab字符。

要輸入tab字符(\t),您應該按Tab鍵,然後按return鍵。

實施例 -

>>> raw_input("Please input :") 
Please input :\t 
'\\t' 
>>> raw_input("Please input :") 
Please input : 
'\t' 

注意,在第二種情況下,我按下tab鍵,然後返回鍵。

0

您可以使用Python的re模塊做到這一點:

import re 
my_delimiter = ",|\.|:" 
my_txt = "this is, just a simple: txt" 
delimited_list = re.split(my_delimiter, my_txt) 
print delimited_list 

結果將是這樣的:

print delimited_list 
['this is', ' just a simple', ' txt'] 
0
>>> d = r'\t' # That's actual input you've got from user 
>>> d 
'\\t' 
>>> d.decode('unicode-escape') # That's one you really want to use 
u'\t'