考虑文件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]
答案 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
。