删除导入的文本文件 (Python)
Removing an imported text file (Python)
我正在尝试从我从 Kindle 导入的文本文件中删除几行。文本看起来像:
Shall I come to you?
Nicholls David, One Day, loc. 876-876
Dexter looked up at the window of the flat where Emma used to live.
Nicholls David, One Day, loc. 883-884
I want to grab the bin bag and do a forensics
Sophie Kinsella, I've Got Your Number, loc. 64-64
完整文件较长,这只是一个文件。我的代码的目的是删除所有写入 "loc. " 的行,以便仅保留摘录。我的目标也可以看作是删除空行之前的行。
到目前为止,我的代码如下所示:
f = open('clippings_export.txt','r', encoding='utf-8')
message = f.read()
line=message[0:400]
f.close()
key=["l","o","c","."," "]
for i in range(0,len(line)-5):
if line[i]==key[0]:
if line[i+1]==key[1]:
if line[i + 2]==key[2]:
if line[i + 3]==key[3]:
if line[i + 4]==key[4]:
最后一个 if
准确找到每个 "loc. " 在文件中的位置(索引)。然而,在这个阶段之后,我不知道如何回到行中,以便代码在行开始的地方捕获,并且它可以被完全删除。接下来我能做什么?你能推荐我另一种删除这条线的方法吗?
提前致谢!
我觉得这个问题可能有点误导!
无论如何,如果您只想删除这些行,则需要检查它们是否包含 "loc." 子字符串。可能最简单的方法是使用 in operator.
不是从 read() 函数获取整个文件,而是逐行读取文件(例如使用 readlines() function)。然后您可以检查它是否包含您的密钥,如果包含则忽略它。
由于结果现在是字符串列表,您可能想要合并它:str.join().
这里我使用另一个列表来存储所需的行,你也可以使用 "more pythonic" filter() 或列表理解(我在下面提到的类似问题中的示例)。
f = open('clippings_export.txt','r', encoding='utf-8')
lines = f.readlines()
f.close()
filtered_lines = []
for line in lines:
if "loc." in line:
continue
else:
filtered_lines.append(line)
result = ""
result = result.join(filtered_lines)
顺便说一句,我认为它可能是重复的 - Here's question about the opposite(即想要包含密钥的行)。
我正在尝试从我从 Kindle 导入的文本文件中删除几行。文本看起来像:
Shall I come to you?
Nicholls David, One Day, loc. 876-876
Dexter looked up at the window of the flat where Emma used to live.
Nicholls David, One Day, loc. 883-884
I want to grab the bin bag and do a forensics
Sophie Kinsella, I've Got Your Number, loc. 64-64
完整文件较长,这只是一个文件。我的代码的目的是删除所有写入 "loc. " 的行,以便仅保留摘录。我的目标也可以看作是删除空行之前的行。
到目前为止,我的代码如下所示:
f = open('clippings_export.txt','r', encoding='utf-8')
message = f.read()
line=message[0:400]
f.close()
key=["l","o","c","."," "]
for i in range(0,len(line)-5):
if line[i]==key[0]:
if line[i+1]==key[1]:
if line[i + 2]==key[2]:
if line[i + 3]==key[3]:
if line[i + 4]==key[4]:
最后一个 if
准确找到每个 "loc. " 在文件中的位置(索引)。然而,在这个阶段之后,我不知道如何回到行中,以便代码在行开始的地方捕获,并且它可以被完全删除。接下来我能做什么?你能推荐我另一种删除这条线的方法吗?
提前致谢!
我觉得这个问题可能有点误导!
无论如何,如果您只想删除这些行,则需要检查它们是否包含 "loc." 子字符串。可能最简单的方法是使用 in operator.
不是从 read() 函数获取整个文件,而是逐行读取文件(例如使用 readlines() function)。然后您可以检查它是否包含您的密钥,如果包含则忽略它。
由于结果现在是字符串列表,您可能想要合并它:str.join().
这里我使用另一个列表来存储所需的行,你也可以使用 "more pythonic" filter() 或列表理解(我在下面提到的类似问题中的示例)。
f = open('clippings_export.txt','r', encoding='utf-8')
lines = f.readlines()
f.close()
filtered_lines = []
for line in lines:
if "loc." in line:
continue
else:
filtered_lines.append(line)
result = ""
result = result.join(filtered_lines)
顺便说一句,我认为它可能是重复的 - Here's question about the opposite(即想要包含密钥的行)。