Python 2.7-IPython'raw_input'并追加到列表中-在每个项目之前添加'u'

我Python 2.7在Mac OSX Lion上使用。我使用的是IPython与Pandas 0.11.0,Numpy和Statsmodels包。


我正在编写一个函数,该函数允许用户在文件上进行逻辑回归,指定要在构建模型中使用的变量,应将哪些变量转换为虚拟变量,以及哪些变量应为自变量。


例如,当我执行以下操作时:


 cols_to_keep = []

 print (df.columns)

 i = eval(raw_input('How many of these variables would you like to use in logistic regression?: '))

 while i != 0:

    i = i - 1

    print (df.columns)

    addTo = raw_input('Enter a variable for this list that you would like to keep and use in logistic regression.: ')

    cols_to_keep.append(addTo)

我最终遇到了麻烦。具体来说,当我要求用户从列表中指定因变量,然后需要将该变量从训练变量列表中删除时:


print (df.columns)


dependent = raw_input('Which of these columns would you like to be the dependent variable?: ')

training.remove(dependent)

在插入打印语句后,我发现添加到训练变量列表中的变量看起来像这样:


('these are the traing variables: ', ['access', u'age_age6574', u'age_age75plus', u'sex_male', u'stage_late', u'death_death'])

似乎u已经在每个用户指定的变量之前放置了。


我的问题是:这是为什么,以及如何解决/解决此问题,以便当用户指定因变量时,实际上已将其从列表中删除。在用户指定变量并将其添加到列表的所有其他情况下,也会发生这种情况,如果我需要用户观察列表,则会造成混乱。


森栏
浏览 139回答 1
1回答

HUX布斯

这些只是unicode字符串,而不是字节字符串。没有错,并且字符串的内容不受影响。的u'text'就是让你可以告诉字节串和unicode字符串之间的区别在Python 2,当你看再版。如果您打印字符串,则不会有任何区别。这在Python 3中是相反的,其中"text"表示一个unicode字符串,而b"bytes"表示一个字节字符串。如果您真的想将它们强制转换为字节串(不太可能),则可以执行以下操作:def ensure_str(s):    if isinstance(s, unicode):        s = s.encode('utf-8')    return ss = ensure_str(raw_input("prompt >"))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python