打印字符,直到行开头

时间:2018-06-08 20:01:50

标签: python python-2.7

考虑文件foo.txt

some simple text
and another line in the file

使用

读取文件
with open('foo.txt', 'r') as myfile:
        data = myfile.read()

我想将位置i的所有字符打印到包含位置i的字符的行的开头。

例如,如果i是第二行中来自另一个h的位置,那么如何发现j以便print data[j,i]返回and anoth

我尝试搜索回来,而char不是\n,但我认为如果文件只有一行,它就无法工作。

那么,是否有一个代表该行开头的字符?我试过^,但它不起作用。

MWE

# -*- coding: utf-8 -*-

with open('foo.txt', 'r') as myfile:
        data = myfile.read()

for i,c in enumerate(data):
    print i,c

# i = 16 is the 1st \n
# so procedure below does not work if 
# the file contains a single line

i = 25        # position of h.    problem with i = 13 for example.
print data[i] # confirming that

j = i
while data[j] != "\n":
    j -= 1

print data[j:i+1]

2 个答案:

答案 0 :(得分:1)

为什么不一行一行地阅读?

i = 8

with open('foo.txt', 'r') as myfile:
    for line in myfile:
        print line[:i+1]

答案 1 :(得分:1)

您必须使用rfind查找最后一个换行符。

data = myfile.read()

i = 25  # position of the h

j = data[:i].rfind("\n")

j现在是data[i]之前的最后一个换行符的位置。增加一次(因此你删除换行符),你可以正确切片。

result = data[j+1:i+1]

如果没有新行,这还有一个额外的好处,因为rfind如果找不到任何内容,则会返回-1