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

时间:2013-06-09 18:41:24

标签: python list python-2.7 ipython

我在Mac OSX Lion上使用Python 2.7。我将IPythonPandas 0.11.0NumpyStatsmodels个软件包一起使用。

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

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

 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)

在插入print语句后,我发现添加到训练变量列表中的变量如下所示:

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

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

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

1 个答案:

答案 0 :(得分:3)

这些只是unicode字符串,而不是字节字符串。没有错,字符串的内容不受影响。 u'text'只是为了在查看repr时可以在Python 2中区分字节字符串和unicode字符串。如果您打印字符串,您将看到没有区别。这在Python 3中是相反的,其中"text"表示unicode字符串,而b"bytes"表示字节字符串。

如果你真的想将它们强制为字节串(不太可能),你可以这样做:

def ensure_str(s):
    if isinstance(s, unicode):
        s = s.encode('utf-8')
    return s

s = ensure_str(raw_input("prompt >"))