python - 如何遍历嵌套列表,在搜索索引之前打印索引的值
问题描述
在 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 文件的格式,第二个是我当前代码打印的内容。
解决方案
在仔细查看您的代码后,我发现了问题并提出了解决方案:
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