拆分用户输入

时间:2015-06-26 10:52:35

标签: python split

我想获取有关分隔符的用户输入并使用它来分割数据。 我认为代码行看起来像这样:

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']

但它仍然是一样的。 但它不起作用。它不是由tab或逗号分隔,因为我希望它是。 请帮我解决这个问题。

4 个答案:

答案 0 :(得分:1)

如果用户输入\t它将以\\t的形式出现,则反斜杠将被转义,并且可以将其解释为blackslash t而不是tab个字符。

要输入tab字符(\t),您应按Tab键,然后按return键。

示例 -

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

注意,在第二种情况下,我按Tab键然后返回键。

答案 1 :(得分:0)

如果在raw_input中输入值'\ t',则会将它们转换为具有2个ascii字符的str'\ t'。它不会根据需要将'\ t'转换为制表符。 例如,如果您知道您将获得输入'\ t'并且您想将其转换为制表符

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

这会将其更改为实际的制表符。但是你必须对所有转义字符(如'\ r'和'\ n')执行此操作,依此类推。你应该做的是要求用','分隔的字符的ascii值。在这种情况下,请求ascii值为'9'并将其转换为int()然后转换为chr(),它应该可以工作。

答案 2 :(得分: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']

答案 3 :(得分: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'