Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中维护结构的同时,对列表列表执行BeautifulSoup操作_Python_List_Beautifulsoup - Fatal编程技术网

在python中维护结构的同时,对列表列表执行BeautifulSoup操作

在python中维护结构的同时,对列表列表执行BeautifulSoup操作,python,list,beautifulsoup,Python,List,Beautifulsoup,我有一个漂亮的soup对象列表,我正试图进一步解析这些对象的单元格内容。我的输出变成一个列表,每个列表上有3个项目,因为表有3列 file=干扰报告 干扰报告项目文件:C:\Users\ksobon\Documents\test\u Project\u 03\u ksobon.rvt已创建:2014年5月26日星期一晚上7:52:32上次更新: A B 1个工作集1:墙壁:基本墙壁:E103-CON 100mm:id 469021工作集1:家具:毛皮董事会会议室表格10头发:董事会会议室布局:i

我有一个漂亮的soup对象列表,我正试图进一步解析这些对象的单元格内容。我的输出变成一个列表,每个列表上有3个项目,因为表有3列

file=干扰报告
干扰报告项目文件:C:\Users\ksobon\Documents\test\u Project\u 03\u ksobon.rvt
已创建:2014年5月26日星期一晚上7:52:32
上次更新:
A B 1个工作集1:墙壁:基本墙壁:E103-CON 100mm:id 469021工作集1:家具:毛皮董事会会议室表格10头发:董事会会议室布局:id 482259 2工作集1:墙:基础墙:E103-CON 100mm:id 469021工作集1:墙:基础墙:E103-CON 100mm:id 483442 3工作集1:墙:基础墙:E103-CON 100mm:id 469060工作集1:家具:毛皮沙发\u gm:2100mm:id 475041 4工作集1:墙:基础墙:E103-CON 100mm:id 469109工作集1:家具:毛皮沙发\u gm:2100mm:id 475273 5工作集1:墙:基础墙:E103-CON 100mm:id 469178工作集1:家具:毛皮沙发\u gm:2100mm:id 475510 6工作集1:墙:基础墙:E103-CON 100mm:id 469178工作集1:家具:毛皮沙发\u gm:2100mm:id 482306 7无论什么:门:双扇单扇总成:800w,2100h(720扇)-标记102B:id 472052工作集1:窗户:WIN-CONCEPTION窗户固定式总成:1200高x1200宽-标记102B:id 472822 8无论什么:门:双扇单扇\u gm:800w,2100h(720扇)-标记101A:id 472376工作集1:窗户:WIN-CONCEPTION窗户固定\u gm:1200高x 1200宽-标记101C:id 472720 9工作集1:窗户:WIN-CONCEPTION窗户固定尺寸:1800高x 1200宽2-Mark 101B:id 472688工作集1:家具:毛皮沙发尺寸:2100毫米:id 482306 干扰结束报告
从BeautifulSoup导入BeautifulSoup soup=BeautifulSoup(文件) tag=soup.findAll('tr')

现在我想将每个子列表元素转换为文本,因此我尝试: txt1=[i.text代表x中的x,txt代表x中的i]
然而,我的txt1输出是一个平面列表,而不是列表列表。我做错了什么

i.text
放入列表中:

txt1 = [[i.text] for x in txt for i in x] 
通过列表理解将所有元素提取到一个列表中,可以将列表展平

l = [[1,2],[2,3],[5,6]]

flatten_l = [x for y in l for x in y]
print (flatten_l)
[1, 2, 2, 3, 5, 6]
也许你需要地图:

l=[[1,2,4],[2,3,5],[5,6,7]]

print [map(str, s) for s in l]

[['1', '2', '4'], ['2', '3', '5'], ['5', '6', '7']]
使用您的代码,在维护结构的每个元素上调用i.text

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(file)

tag = soup.findAll('tr')
txt=[(i.findAll('td')) for i in tag]
final=[[] for x in range(len(txt))]
for j,k in enumerate(txt):
    for i in k:
        final[j].append(i.text)  

 print final
 [[u'', u'A', u'B'], [u'1', u'Workset1 : Walls : Basic Wall : E103-CON 100mm : id 469021', u'Workset1 : Furniture : FUR_BoardroomTable10Chairs_gm : Board Room Layout......

txt的结果是一个列表列表,每个列表包含3项,因为每个表中有3列。我希望保持该结构,但将每个对象转换为字符串。您建议将i.text放在括号中,这给了我每个项目的单独列表。所以我想我需要问一下,如何在不改变其原始结构的情况下迭代列表列表。我需要记住它是这样做的。谢谢还有一件事。我真的很想使用来自beautifulsoup模块的函数文本,您建议使用str。当我将str分为文本时,它会抛出一个错误,即文本未定义。想法?尝试使用循环而不是列表comp,并在每个元素上调用方法来更新它们。你可以在txt:txt1.append(map(i.text,txt))中为i使用类似map(i.text,j)的东西。这仍然不起作用。
from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(file)

tag = soup.findAll('tr')
txt=[(i.findAll('td')) for i in tag]
final=[[] for x in range(len(txt))]
for j,k in enumerate(txt):
    for i in k:
        final[j].append(i.text)  

 print final
 [[u'', u'A', u'B'], [u'1', u'Workset1 : Walls : Basic Wall : E103-CON 100mm : id 469021', u'Workset1 : Furniture : FUR_BoardroomTable10Chairs_gm : Board Room Layout......