首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代嵌套列表,在搜索索引值之前打印索引值

如何迭代嵌套列表,在搜索索引值之前打印索引值
EN

Stack Overflow用户
提问于 2020-04-15 08:41:57
回答 2查看 62关注 0票数 0

在python中:如果标题令人困惑,请道歉。我有一个从我的Kindle的clippings.txt文件中获得的列表。我想在列表中搜索,只打印我突出显示的实际单词或句子。.csv文件的格式为:

代码语言:javascript
复制
経済ヤクザ (角川文庫) (一橋 文哉) (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

転載、
==========

诸若此类。到目前为止我的代码是:

代码语言:javascript
复制
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文件的格式,第二个图像是我当前代码打印的图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-15 09:02:04

在仔细查看您的代码后,我发现了问题并提出了解决方案:

代码语言:javascript
复制
for index, block in enumerate(raw_list):
  for characters in block:
    if '===' in characters:
      print(raw_list[index-1])

你得到了相同的值,因为“该值”的索引总是相同的。(列表中的重复值)

例如:

代码语言:javascript
复制
example_list = [1,2,1]

for x in example_list:
  print(example_list.index(x))

你会得到:

代码语言:javascript
复制
0
1
0
票数 1
EN

Stack Overflow用户

发布于 2020-04-15 09:04:26

在迭代输入文件的各行时,可以使用变量保存前一行的内容,如果当前行等于记录分隔符,则输出前一行:

代码语言:javascript
复制
with open(path) as file:
    for line in map(str.rstrip, file):
        if line == '==========':
            print(prev)
        prev = line

演示:https://repl.it/@blhsing/GlossyPungentGlitch

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61219531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档