Python从文本中处理表
我正在处理一个文本文件中的表,不幸的是它不是HTML格式的。 我最大的问题是,我的代码将所有内容都拆分为空格(这很好),但我需要为左侧显示的文本设置一个例外。因此,我不想分割“法定税收支出(福利)”。我的代码如下所示Python从文本中处理表,python,Python,我正在处理一个文本文件中的表,不幸的是它不是HTML格式的。 我最大的问题是,我的代码将所有内容都拆分为空格(这很好),但我需要为左侧显示的文本设置一个例外。因此,我不想分割“法定税收支出(福利)”。我的代码如下所示 s='' 2001 2000 1999 ------------------------- ----------------------- ------------------------- 金额%Amo
s=''
2001 2000 1999
------------------------- ----------------------- -------------------------
金额%Amount%金额%Amount%
------------ --------- ----------- -------- ------------ --------
法定税率的税费(福利)
持续经营利率$(1702000)(34.0)$80240 34.0$(1524000)(34.0)
其他差额净额506000 10.1(80240)(34.0)240000 5.4
估价备抵的变动
递延所得税资产1196000 23.9---(573000)(12.8)
从收入中吸收的利益
停业经营--1857000 41.4
------------ ------- ------------ ------- ------------ -------
所得税准备金总额
(福利)$-%$-%$-%$-%
============ ======= ============ ======= ============ =======
'''
bs1=bs(s,“html.parser”)
data=bs1.find('table').get_text().splitlines()
itemlist=[]
对于行输入数据:
item=[第行中项目的项目。拆分()]
itemlist.append(项目)
以及列表的输出:
[]
[]
[]
['2001', '2000', '1999']
['-------------------------', '-----------------------', '-------------------------']
[“金额”、“金额”、“金额”、“百分比”、“金额”、“金额”、“百分比”]
['------------', '---------', '-----------', '--------', '------------', '--------']
[‘税收’、‘费用’、‘福利’、‘在’、‘法定’]
[]
[rate'、'on'、'Continuous'、'operations'、'$'、'1702000'、'34.0'、'80240'、'34.0'、'$'、'1524000'、'34.0']
[‘其他’、‘差异’、‘净额’、‘506000’、‘10.1’、‘80240’、‘34.0’、‘240000’、‘5.4’]
[]
[“变更”、“变更”、“估价”、“津贴”]
['for'、'递延'、'税'、'资产'、'1196000'、'23.9'、'-'、'-'、'(573000)'(12.8)']
[‘受益’、‘吸收’、‘被’、‘收入’、‘来自’]
[‘停业’、‘经营’、‘经营’、‘经营’、‘经营’、‘经营’、‘经营’、‘1857000’、‘41.4’]
['------------', '-------', '------------', '-------', '------------', '-------']
[‘总额’、‘收入’、‘税款’、‘准备金’]
['(利益)'''''''-'、'-'、'$'、'-'、'-'、'-%'、'-'、'$'、'-'、'-%']
['============', '=======', '============', '=======', '============', '=======']
[]
因此,我基本上希望组合列表中的文本元素,而不是其他字符。有人知道如何解决这个问题吗?鉴于您的数据没有太多的空间来提供通用答案,您可以选择搜索第一次出现的“---”字符,并使用定义的长度进行拆分 要做到这一点,您将添加一个通过行的初始运行,以确定拆分索引
for line in data:
idx = line.find('--')
if idx != -1:
break
for line in data:
try:
itemlist.append(line[0:idx])
line = line[idx:]
item = [item for item in line.split()]
itemlist.append(item)
except:
itemlist.append(line)
使用
--------------
模式查找行
,第一个-
字符的索引是文本元素的x2
索引。用行[:x2]