返回文件中的第一行代码

时间:2016-04-27 03:36:26

标签: python python-3.x

我试图拉出文件中每一行的第一个字母,然后将这些字母打印到一个新文件中。我正在逐步工作,所以我创建了能够拉出每一行的第一个字母的代码,但是,当我添加代码来读取特定文件时,它似乎没有正确地迭代整个文件内容。有谁知道为什么我的for循环不迭代?或许,问题是它是迭代但没有正确地将字母添加到'行'。

def secret2(m):
    infile = open(m, 'r')
    text = infile.read()
    for line in text:
        lines = text[0]
        for i in range(len(text)):
            if text[i] == '\n':
                lines += text[i+1]
            print(lines)
            return(lines)
        m.close()

输出:

>>> secret2('file.txt')
A
'A'
>>> 

适当的输出是:

>>> secret2('file.txt')
'ALICE'
>>>

3 个答案:

答案 0 :(得分:1)

您的代码正在遍历字符而不是行。您可以使用以下代码打印每行中的第一个字符:

def secret2(m):
    with open(m) as infile:
        print(''.join(line[0] for line in infile if line))

答案 1 :(得分:0)

您希望将每一行视为单个数据。因此,请使用readlines()代替read。所以你的代码应该是

def secret2(m):
    infile = open(m, 'r')
    text = infile.readlines()
    for j in (text):
        print j[0]

答案 2 :(得分:0)

你可以使用这个:

def get_1st_chr(your_file, id_line) :
    with open(your_file) as f :
        text_splitted = f.read().splitlines()
    f.close()
    return text_splitted[id_line][0]

或者,如果你想要所有的第一行字符:

def get_1st_chr(your_file, nb_lines) :
    with open(your_file) as f :
        text_splitted = f.read().splitlines()
    f.close()
    for i in range(nb_lines) :
        print(text_splitted[[i][0])

当然,您可以将 0 替换为您要打印的字符的 id。