我想获取有关分隔符的用户输入并使用它来分割数据。 我认为代码行看起来像这样:
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或逗号分隔,因为我希望它是。 请帮我解决这个问题。
答案 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'