在python中:如果标题令人困惑,请道歉。我有一个从我的Kindle的clippings.txt文件中获得的列表。我想在列表中搜索,只打印我突出显示的实际单词或句子。.csv文件的格式为:
経済ヤクザ (角川文庫) (一橋 文哉) (BOOK)
- 位置No. 4-4のハイライト |作成日: 2020年3月21日土曜日14:53:17 *(DATE / PAGE)*
(EMPTY LINE)
無断 (WORD THAT I WANT)
========== (SEPARATOR
経済ヤクザ (角川文庫) (一橋 文哉)
- 位置No. 4-4のハイライト |作成日: 2020年3月21日土曜日 14:53:40
転載、
==========诸若此类。到目前为止我的代码是:
import csv
raw_list = []
path = r'D:\Desktop\kindlewords.txt'
#open file, append each line to raw_list
with open(path, 'r',encoding='utf-8') as csv_file:
csv_reader = csv.reader(csv_file)
for line in csv_reader:
raw_list.append(line)
csv_file.close()
print(raw_list)
for block in raw_list:
for characters in block:
if '===' in characters:
print(raw_list[raw_list.index(block)-1])我的问题是,这将返回大量的“無断”,这只是我想要的列表中的第一个单词--它似乎只会在“=”第一次出现之前命中该单词。
我希望能够找到所有的匹配项,并且对任何方法都是开放的(我尝试过正则表达式,但不知道在这种情况下如何使用它)。


第一个图像是.txt文件的格式,第二个图像是我当前代码打印的图像。
发布于 2020-04-15 09:02:04
在仔细查看您的代码后,我发现了问题并提出了解决方案:
for index, block in enumerate(raw_list):
for characters in block:
if '===' in characters:
print(raw_list[index-1])你得到了相同的值,因为“该值”的索引总是相同的。(列表中的重复值)
例如:
example_list = [1,2,1]
for x in example_list:
print(example_list.index(x))你会得到:
0
1
0发布于 2020-04-15 09:04:26
在迭代输入文件的各行时,可以使用变量保存前一行的内容,如果当前行等于记录分隔符,则输出前一行:
with open(path) as file:
for line in map(str.rstrip, file):
if line == '==========':
print(prev)
prev = linehttps://stackoverflow.com/questions/61219531
复制相似问题