2015-06-26 47 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'