Python 如何遍历嵌套列表,在搜索到的索引之前打印索引值
在python中: 如果标题令人困惑,请道歉。我有一个从Kindle的clippings.txt文件中获取的列表。我想在列表中搜索,只打印我突出显示的实际单词或句子。.csv文件的格式为:Python 如何遍历嵌套列表,在搜索到的索引之前打印索引值,python,loops,csv,for-loop,iterator,Python,Loops,Csv,For Loop,Iterator,在python中: 如果标题令人困惑,请道歉。我有一个从Kindle的clippings.txt文件中获取的列表。我想在列表中搜索,只打印我突出显示的实际单词或句子。.csv文件的格式为: 経済ヤクザ (角川文庫) (一橋 文哉) (BOOK) - 位置No. 4-4のハイライト |作成日: 2020年3月21日土曜日14:53:17 *(DATE / PAGE)* (EMPTY LINE) 無断 (WORD THAT I WANT) ========== (SEPARATOR 経済ヤクザ (角
経済ヤクザ (角川文庫) (一橋 文哉) (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
仔细查看您的代码后,我发现了这个问题,并提出了一个解决方案:
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
在迭代输入文件的行时,可以使用变量保存前一行的内容,如果当前行等于记录分隔符,则可以输出前一行:
with open(path) as file:
for line in map(str.rstrip, file):
if line == '==========':
print(prev)
prev = line
演示:在迭代输入文件的行时,可以使用变量保存前一行的内容,如果当前行等于记录分隔符,则输出前一行:
with open(path) as file:
for line in map(str.rstrip, file):
if line == '==========':
print(prev)
prev = line
演示:那么你想要单词、书籍和页面?或者“==”之后的第一句话?如果你粘贴一个文件样本(1或2段)也会有帮助@andreis11我只想要这个单词。那里应该有一个样本的图像-它没有显示出来吗?-编辑:我想它也会被认为是一个句子。就在每个文档之前的那一行“=======”s.那么你想要单词、书籍和书页?或者“==”之后的第一句话?如果你粘贴一个文件样本(1或2段)也会有帮助@andreis11我只想要这个单词。那里应该有一个样本的图像-它没有显示出来吗?-编辑:我想它也会被视为一个句子。只需在每一行之前”======“是的,这就解决了!非常感谢。不客气!如果你也将其标记为答案,我将不胜感激!这就解决了!非常感谢。不客气!如果你也将其标记为答案,我将不胜感激!