Python从文本中处理表

Python从文本中处理表,python,Python,我正在处理一个文本文件中的表,不幸的是它不是HTML格式的。 我最大的问题是,我的代码将所有内容都拆分为空格(这很好),但我需要为左侧显示的文本设置一个例外。因此,我不想分割“法定税收支出(福利)”。我的代码如下所示 s='' 2001 2000 1999 ------------------------- ----------------------- ------------------------- 金额%Amo

我正在处理一个文本文件中的表,不幸的是它不是HTML格式的。 我最大的问题是,我的代码将所有内容都拆分为空格(这很好),但我需要为左侧显示的文本设置一个例外。因此,我不想分割“法定税收支出(福利)”。我的代码如下所示

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]