首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理列表中的元组值(尝试了几个小时:( )

处理列表中的元组值(尝试了几个小时:( )
EN

Stack Overflow用户
提问于 2015-04-10 07:50:22
回答 3查看 89关注 0票数 0

我是Python初学者,任务是沿着相同的循环行拆分文档,然后将这些部分安全地保存在不同的文件中。我拆分了行,然后试图把它放在一个列表中的元组中。

代码语言:javascript
复制
f = open(PATENTS, 'r')
text =f.read()
n=0
counter=0
textblock=[]
stext= text.splitlines()

for lines in stext:
    if stext[n]!='<?xml version="1.0" encoding="UTF-8"?>':
        textblock.append((counter,stext[n]))

    else:
        counter+=1
    n+=1
print counter
print textblock[1][1]
f.close()

问题是:

代码语言:javascript
复制
textblock[1][1]

它不起作用:

我的计数器起作用,if语句也起作用,有人能给我一个提示吗?

我的文件是一个大文本文件,每个专利都从if语句中使用的行开始。现在我想把专利和其他专利分开。

所以我有一个清单,在某种程度上是这样:

(0,patenttext0),(1,patenttext1).

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-10 08:18:43

textblock.append((counter,stext[n]))

似乎你在列表中存储了一个元组。

请通过打印这样的列表来找出列表中的内容

代码语言:javascript
复制
print textblock

您的列表文本块必须如下所示

代码语言:javascript
复制
[(1,"line1),(2,"line2"),(3,"line3")]

这个列表是一个一维列表,你正在使用索引,就像2D数组一样。

所以,请试试textblock1,而不是textblock1,不知道你想要的是什么。但是,查看您的评论似乎需要在列表的所有元组中打印行,如果需要,则需要遍历所有列表并打印行。你应该用这样的循环。

代码语言:javascript
复制
line = "" 
for i in range(len(textblock)) :
       line=line+textblock[i][1]
 print line
票数 0
EN

Stack Overflow用户

发布于 2015-04-10 08:22:10

Python从0开始,尝试print textblock[0][0]

您也可以使用

代码语言:javascript
复制
for n in range(len(stext)):
        if stext[n]!='<?xml version="1.0" encoding="UTF-8"?>':
            textblock.append((counter,stext[n]))
        else:
            counter+=1

而不是

代码语言:javascript
复制
n=0
for lines in stext:
    if stext[n]!='<?xml version="1.0" encoding="UTF-8"?>':
        textblock.append((counter,stext[n]))

    else:
        counter+=1
    n+=1   

这就节省了n的声明和增加。

票数 0
EN

Stack Overflow用户

发布于 2015-04-10 09:35:06

试着改变一下

代码语言:javascript
复制
if stext[n]!='<?xml version="1.0" encoding="UTF-8"?>':

代码语言:javascript
复制
if lines.strip() !='<?xml version="1.0" encoding="UTF-8"?>':

代码语言:javascript
复制
textblock.append((counter,stext[n]))

代码语言:javascript
复制
textblock.append((counter,lines)) # or lines.strip()

那你就得知道

  • 不需要 文本=f.read() stext= text.splitlines() 只是 stext = f.readlines() #将得到行列表
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29556056

复制
相关文章

相似问题

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