Python-lines_startswith代码

Python-lines_startswith代码,python,python-3.x,python-3.4,docstring,Python,Python 3.x,Python 3.4,Docstring,以下是我必须完成的代码。因此,我想要的结果是通读一个文件(每行),如果我在文件中读取的行的第一个字母与我选择的返回列表中的行的字母匹配 def lines_startswith(file,letter): '''(file open for reading, str) -> list of str Return the list of lines from file that begin with letter. The lines should have the newl

以下是我必须完成的代码。因此,我想要的结果是通读一个文件(每行),如果我在文件中读取的行的第一个字母与我选择的返回列表中的行的字母匹配

def lines_startswith(file,letter):
    '''(file open for reading, str) -> list of str
    Return the list of lines from file that begin with letter. The lines should have the newline removed.
    Precondition:len(letter) == 1
    '''
    matches = []
    (blank)
    return matches
我必须填空才能完成代码

这是我到目前为止所做的,但我还没有得到我所需要的结果

for line in file:
        if line[0] == 'letter':
            matches.append(line)
我的代码有什么问题?

这是:

if line[0] == 'letter':
检查
的第一个字符是否是6个字符的字符串
“字母”
,这当然没有意义,也永远不会是真的

你是说

if line[0] == letter:
这将检查
行[0]
中的单个字符是否与
字母中的单个字符相同,这正是您所需要的

一种更简洁的写作方式是:

matches = [line for line in file if line[0] == letter]
这:

检查
的第一个字符是否是6个字符的字符串
“字母”
,这当然没有意义,也永远不会是真的

你是说

if line[0] == letter:
这将检查
行[0]
中的单个字符是否与
字母中的单个字符相同,这正是您所需要的

一种更简洁的写作方式是:

matches = [line for line in file if line[0] == letter]

您可以将其作为列表来执行:

matches = [line.strip() for line in file if line.startswith(letter)]

您可以将其作为列表来执行:

matches = [line.strip() for line in file if line.startswith(letter)]

您需要打开文件,然后使用列表理解(或循环)来填充匹配列表

def lines_startswith(file,letter):
    matches = []

    with open(file) as f:
        matches = [line for line in f if line[0] == letter] #this is a list comprehension

    return matches

#print the returned list in the console
print lines_startswith('folder.log','h')
对于不区分大小写的比较(说明中未指定,但您需要考虑到这一点。“a”字母仍然是“a”字母,对吗?),您可以用以下内容替换列表理解

matches = [line for line in f if line[0].lower() == letter.lower()]

您需要打开文件,然后使用列表理解(或循环)来填充匹配列表

def lines_startswith(file,letter):
    matches = []

    with open(file) as f:
        matches = [line for line in f if line[0] == letter] #this is a list comprehension

    return matches

#print the returned list in the console
print lines_startswith('folder.log','h')
对于不区分大小写的比较(说明中未指定,但您需要考虑到这一点。“a”字母仍然是“a”字母,对吗?),您可以用以下内容替换列表理解

matches = [line for line in f if line[0].lower() == letter.lower()]


以字母开头的
是什么意思?请使用标识和正确的格式输入代码。现在它只是一段文字。你能把它格式化一点吗?我不知道你需要什么。给定的代码模板和您尝试过的内容都很有用。这看起来应该是可行的,您得到的错误是什么?或者您得到的意外结果是什么?
行[0]
只存储一个字符。文件中读取的行必须以我选择的字母开头,例如“T”。因此,如果文件中的行以字母“T”开头,我希望将其返回。您所说的
以字母开头是什么意思?
?请使用标识和正确的格式输入您的代码。现在它只是一段文字。你能把它格式化一点吗?我不知道你需要什么。给定的代码模板和您尝试过的内容都很有用。这看起来应该是可行的,您得到的错误是什么?或者您得到的意外结果是什么?
行[0]
只存储一个字符。文件中读取的行必须以我选择的字母开头,例如“T”。因此,如果文件中的行以字母“T”开头,我希望它返回。好的!非常感谢。这能解决我的问题吗??在我按照您的建议修复代码之后,当我执行代码时,当前得到的结果只是一个空白的lst[](如果第[0]==行:我得到的结果:['T'],我希望得到如下结果:[“轻旅的指控”\n“,“他们的不回答”;“他们的不解释原因”;“他们的只做和死:\n“,“然后他们骑回来,但不是”;“他们战斗得很好”;\n'.@HeeRaeLee你确定你把
而不是
字母
添加到比赛列表中了吗?@是的!行开始('C:/Python34/Doc/thechargeofthelightbattle.txt','T')['Light battle的冲锋队\n','T'他们的不回答,\n','T'他们的不解释原因,\n','T'他们的只做和死:\n','然后他们骑回去,但不是\n','T他们战斗得如此出色\n']我期待着这样的结果。我的代码是否需要包含其他内容来检查文件中的每一行?好的!谢谢!!这能解决我的问题吗?在我按照您的建议修复代码后,我当前执行代码时得到的结果只是一个空的lst[](如果行[0]==字母:我得到的结果:['T']我期待着这样的结果:[“轻旅的指控”\n、“他们的不回答”\n、“他们的不解释原因”\n、“他们的只是做和死:\n”、“然后他们骑回去,但不是”\n、“他们打得很好”\n']@HeeRaeLee您确定要将
而不是
字母
添加到匹配列表中吗?@unwind yes!行开始('C:/Python34/Doc/thechargeofthelightbattle.txt','T'))[“轻型旅的负责人”\n“,“他们的不回答”,“他们的不推理”,“他们的只做和死:\n“,“然后他们骑回来,但不是”,“他们战斗得很好”\n“,]我期待着这样的事情..我的代码是否需要包含其他内容来检查文件中的每一行??