拆分用户输入

Split a user input

我想获取有关分隔符的用户输入并使用它来拆分数据。 我认为代码行应该是这样的:

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)

那么我的示例输入应该像

write down the delimiter of your file(e.g. ','): '\t'

输出应该是这样的

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

但还是一样。 但它不起作用。它没有像我希望的那样由制表符或逗号分隔。 请帮我解决这个问题。

如果用户输入 \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 键,然后按了 return 键。

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

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

这会将其更改为实际的制表符。但是你必须对所有转义字符都这样做,比如 '\r' 和 '\n' 等等。您应该做的是询问由“,”分隔的字符的 ascii 值。在这种情况下,请求 '9' 的 ascii 值并将其转换为 int(),然后转换为 chr(),它应该可以工作。

您可以使用 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']
>>> 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'