在Python中检查文本文件中的内容是否在Excel文件中存在

2024-05-13 08:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须检查结构化文本文件(表格布局由空格构成)中的每个值是否都在Excel文件中。所以我开始这样做是为了确保我拥有我所需要的一切:

data = []
lt = 'unknown'

with open('VW.txt') as f_input:
    for row in f_input:
        data_row = re.match(r'(\d+) +(\d+) +(\d+) +(\d+) +(\d+) +(\d+) +(\d+) +(.{8}) +(.*)|LT +: (\w+)', row)

        if data_row:
            if data_row.groups()[0]:
                data.append([lt] + list(data_row.groups()[:-1]))
            else:
                lt = data_row.groups()[-1]

data中,我有文本文件中的行列表。现在我必须检查每一行,如果data[0]data[1]data[2]也在Excel文件的某一行中,那么跳过,如果没有,则创建另一个只包含缺失行的列表。你知道吗

我试过很多次,也试过很多种方法,但我能得到的唯一结果是一个由四个元素组成的列表(这些元素和我用表格检查的结果不一样)

我正在使用OpenPyxl浏览Excel。你知道吗

VW.txt示例:

LISON                 Kontoauszug                          10.07.2016     20:13
                  Monat/Jahr: 06.16                                  Seite:   1

Lief. : 000526070 Company Name (V Sachbearb.: Name Surname
LT    : VW0012    Lief.-Eigene.:    0                  Tel.: Phone

Saldo Vorm.:     170  BEL.:     253 ENTL:     181 Endsaldo:      242

B-Dat  Abs/Empfae   BEL.    ENTL   Saldo  BA  Bel-Nr    WK-LG-LR   Bemerkung
050416 000590178       0       1     169  50  16103483  49-12-00   FEHLER IM SY
050416 000590178       0       1     168  50  16103484  49-16-00   FEHLER IM SY
050516 000590030       0       2     166  50  16104633  16-01-K1
160516 000590030       0       1     165  50  16104980  16-01-K1
170516 000590030       0       2     163  50  16105015  16-01-K1
210516 000590120       1       0     164  51     36873  37-  -     000590120
230516 000590178       1       0     165  51  16105229  49-16-00   NSURNAME
240516 000590030       0       2     163  50  16105243  16-01-K1
300516 000590030       0       1     162  50  16105484  16-01-K1
300516 000590030       0       1     161  50  16105483  16-01-K1
310516 000590030       2       0     163  51    697321  26-  -     NSURNAME
310516 000590030       0       2     161  50  16105536  16-01-K1
310516 000590030       0       1     160  50  16105542  16-01-K1
010616 000590120       2       0     162  21     39694  37-  -     000590120
010616 000710030      12       0     174  21    627948  21-  -     000710030
010616 000590120       0       1     173  50     39694  37-  -
030616 000712550       0       2     171  10  16105627  28-05-60
030616 000710130       0       1     170  10  16105628  11-01-K4
030616 000448489       0       2     168  10  16105638  18-66-23
030616 000590120       0       2     166  10  16105626  37-75-I4
060616 000590030      41       0     207  21    698299  26-  -     000590030
070616 000712550       0       2     205  10  16105714  28-05-60
070616 000712550       0       1     204  10  16105717  28-08-60
070616 000590178       0       1     203  10  16105710  49-16-
070616 000590120       0       1     202  10  16105702  37-75-I4
070616 000590120       0       1     201  10  16105703  37-78-I4
070616 000590120       0       1     200  10  16105704  37-78-I8
070616 000590235       0       1     199  10  16105707  33-07-K9
070616 000710030       0       1     198  10  16105715  24-06-S2
070616 000590030       0       1     197  10  16105716  16-01-K1
070616 000590030       0       1     196  10  16105722  16-01-K1
070616 000590030       0       3     193  10  16105726  16-01-K1
070616 000711420       0       1     192  10  16105706  40-01-K1
080616 000590120       1       0     193  21     31456  37-  -     000590120
080616 000590120       1       0     194  21     31456  37-  -     000590120
080616 000710030       2       0     196  21    630076  21-  -     000710030
080616 000710030       2       0     198  21    630076  21-  -     000710030
080616 000710030       4       0     202  21    630076  21-  -     000710030
080616 000710136       0       1     201  10  16105769  15-01-F4
090616 000590178       2       0     203  21    491379  49-  -     000590178
090616 000710030       0       1     202  10  16105842  21-01-P0
090616 000710030       0       4     198  10  16105843  21-01-P0
-------------------------------------------------------------------------------
- COMPANY SITE                                          Behaltermanagement -
BA=10 Entlast. durch Lieferschein       BA=11 Belast. durch Lieferschein
BA=20 Entlast. durch PV-Schein          BA=21 Belast. durch PV-Schein
BA=22 Entlast. durch MRV-/Lieferschein  BA=23 Belast. durch MRV-/Lieferschein
BA=30 Entlast. durch Querverkehr        BA=31 Belast. durch Querverkehr
BA=50 Entlast. durch Korrektur          BA=51 Belast. durch Korrektur
BA=70 Entlast. durch Inventurangleich   BA=71 Belast. durch Inventurangleich
BA=NE Entlast. durch NeG neutr. Buch.   BA=NB Belast. durch NeG neutr. Buch.
BA=NK Neukauf                           BA=VS Verschrottung
BA=NW Neukauf Wertersatz                BA=NR Neukauf Recycling
BA=VR Verschrottung Recycling





LISON                 Kontoauszug                          10.07.2016     20:13
                  Monat/Jahr: 06.16                                   Seite:   2

Lief. : 000526070 COMPANY NAME (V Sachbearb.: NAME SURNAME
LT    : VW0012    Lief.-Eigene.:    0                  Tel.: PHONE

Saldo Vorm.:     170  BEL.:     253 ENTL:     181 Endsaldo:      242

B-Dat  Abs/Empfae   BEL.    ENTL   Saldo  BA  Bel-Nr    WK-LG-LR   Beme

Excel文件:

|Material|MaterialDesc|MovimentType|MaterialDoc|Quantity|Date|DDT|CompanyRif|

大约700排。你知道吗

就像:

好的,我有一个与我们的箱号相等的LT号。
所以我得检查一下

VW0012 | B-Dat | Entl or Bel | Bel-Nr 

如果它们在我的Excel的一行中,那么它们与我们同步,我们不需要做任何事情,但是如果由于某种原因,这些值没有出现在Excel文件中,那么我们必须告诉其他公司修改它们编写的内容。你知道吗


Tags: 文件ltdatak1excelrowbelba