Python 的 startswith 方法

1 投票
3 回答
8602 浏览
提问于 2025-04-16 15:09

我刚接触Python,有点搞不懂为什么这个不管用。

我有一个变量,大概是这样的:

[u'\n                Data I want              ']

但我还有一些变量,它们就是简单的:

[u'                more Data I want              ']

我在用循环处理这些变量,但我需要把数据周围多余的东西去掉。我写了一个函数来处理这个,但我不太确定为什么它不管用(我觉得\n可能是个特殊字符)。

def stripName(name):
    name = str(name)
    if name.startswith( "\n" ):
        print "starts with new line"
        name = name[5:-2]
    else:
        print "does not start with new line"
        name = name[3:-2]
    return name

问题是“if name.startswith( "\n" )”这个条件从来没有匹配成功……我看过其他的例子,觉得我做的和他们一样。我甚至试过if name.startswith( "\n" ) == 'True':,但那也不行。

谢谢大家提前给的任何建议。

3 个回答

1

如果名字是 [u'\n data '],那么用 str(name) 转换后会包含方括号。你应该这样写:

name = name[0]
3

我觉得你传入的是一个 list(列表)实例,然后用 str 把它转换成字符串(在 name=str(name) 这一行)。你可以试试用 name=name[0] 来代替。

另外,代码的格式看起来不太对。跟在 def 后面的行应该缩进一个层级。

还有一点,startswith 不是一个命令。它是一个 方法。请搞清楚这些术语,不然你会很容易搞混。像 Python 这样的编程语言没有“命令”。相反,代码是由语句和表达式组成的,包括方法调用。

5

这样怎么样:

def stripName(name):
    return name[0].strip()

撰写回答