У меня есть большая текстовая строка, которая имеет несколько строк. Некоторые из этих строк имеют форму списка материалов следующим образом: Pls прокрутите вправо, чтобы увидеть полные данные.
DESCRIPTION
GST IN USD CHARGES IN USD\n Freight charge - 139 KG @ USD
0.70/KG
Zero Rated 97.30\n Warehouse Handling -
Gateway
Fee
Zero Rated 50.00\n Handling - Origin Handling
Zero Rated 65.00\n Delivery Cartage
Zero Rated 75.00\n Documentation fee
Zero Rated 32.50\n\n\n\n\n
Выше приведено текстовое представление фактического счета в формате PDF, которое выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/XSZmh.png)
Мне нужен окончательный вариант вывод для формы:
{
"Freight Charge": 97.30,
"Warehouse Handling": 50.00,
"Origin Handling": 65.00,
"Delivery cartage": 75.00
"Documentation fee": 32.50
}
Таким образом, в основном извлекаются основные затраты из соответствующих подзаголовков описания.
Однако проблема в том, что подзаголовки описания не являются фиксированными строками. Если бы это было так, я могу попробовать что-то вроде:
delivery_cartage = re.search(r"Delivery Cartage.*Zero Rated\s*(.*)",output).group(1)
documentation_fee = re.search(r"Documentation fee.*Zero Rated\s*(.*)",output).group(1)
Для разных текстовых файлов описываемые подзаголовки отличаются, оставляя остальные столбцы (GST в долларах США) и фиксированными столбцы сборов в долларах США фиксированными. ,
Например для другого текстового файла у меня есть следующие подзаголовки в разделе ОПИСАНИЕ
DESCRIPTION
GST IN USD CHARGES IN USD\n
Freight charge - 833.5 KG @ USD 0.68/KG Zero Rated 566.78\n
Terminal Handling Charges IOR FEE Zero Rated 1,200.00\n
Handling - 833.5 KG @ USD 0.50/KG Zero Rated 416.75\n
Delivery Cartage - 833.5 KG @ USD 0.25/KG Zero Rated 208.38\n
Fuel Surcharge - 833.5 KG @ USD 0.25/KG Zero Rated 208.38\n
War Risk Surcharge - 833.5 KG @ USD 0.14/KG Zero Rated 116.69\n\n\n\n\n
, который выглядит ниже
![enter image description here](https://i.stack.imgur.com/ZtJIY.png)
Как вы можете см. этот раздел имеет несколько различных подзаголовков: топливный сбор, плата за обслуживание терминала, доплаты за военные риски и т. д. c.
{
"Weight" : 398.00 KG,
"VOLUME":4.99 M3,
"CHAREGABLE":833.500 KG,
"PACKAGES" : 12 PLT,
"MAWB": 2394746354,
"HAWB": SBCA20083746,
"Freight Charge": 566.78,
"Terminal Handling Charges": 1200.00,
"Handling - 833.5": 416.75,
"Delivery Cartage": 208.38
"Fuel Surcharge": 208.38
"War Risk Surcharge:116.69
}
Это полнотекстовая строка с полужирным черным цветом - ключи словаря, а красным - значения для соответствующих ключей, которые я хочу извлечь.
\n\n INVOICE ABC005109692 Page 1 of 1\n\n ABC SERVICES PTE LTD (31-Jan-20\n CUSTOMER ID SGARSCDABS\n SOUTH ST 3 #08-01 SHIPMENT SSISA018830\n SINGAPORE 1234672 DUE DATE 01-Mar-20\n TERMS 30 days from Inv. Date\n INCOTERM DDP - Delivered Duty Paid\n **Try the e-Booking tool available for you through the IRIS portal** CONSOL NUMBER C065938576823\n********************************************************************************************************************\n SHIPMENT DETAILS SHIPPER CONSIGNEE\n KUSU PTE LTD C/O ABC SERVICES PTE LTD MPMS ENTERPRISE - (ABC09987-V)\n REFERENCE\n 128465504968, 53389/233973\n GOODS DESCRIPTION\n NETWORK BUNDLE, BASIC DEGREE, 1 RAIL INVOICE NO: 298773 SHIPPING REF: 094739\n IMPORT CUSTOMS BROKER **WEIGHT** **VOLUME** **CHARGEABLE** **PACKAGES**\n 398.000 KG 4.999 M3 833.500 KG 12 PLT\n FLIGHT / DATE **MAWB** **HAWB**\n / MB756 / **2394746354** **SBCA20083746**\n GOODS COLLECTED FROM SGSIN = Singapore , Singapore ETD 07-Jan-20 GOODS DELIVERED TO MYSHA = Alam , Malaysia ETA 09-01-20 15:00\n\n ORIGIN SGSIN = Singapore, Singapore ETD 08-01-20 19:30 DESTINATION MYKUL = Kuala Lumpur, Malaysia ETA 08-01-20 20:30\n\n CHARGES\n DESCRIPTION GST IN USD CHARGES IN USD\n **Freight charge - 833.5 KG @ USD 0.68/KG Zero Rated 566.78\n Terminal Handling Charges IOR FEE Zero Rated 1,200.00\n Handling - 833.5 KG @ USD 0.50/KG Zero Rated 416.75\n Delivery Cartage - 833.5 KG @ USD 0.25/KG Zero Rated 208.38\n Fuel Surcharge - 833.5 KG @ USD 0.25/KG Zero Rated 208.38\n War Risk Surcharge - 833.5 KG @ USD 0.14/KG Zero Rated 116.69**\n\n\n\n\n TOTAL CHARGES\n Please contact us within 7 days should there be any discrepancies. SUBTOTAL 2,716.98\n Interest rate of 1.5% per month will be charged on overdue invoices. ADD GST 0.00\n NEW: Payment available
Поэтому моя проблема в том, что я хочу извлечь все подзаголовки в столбце ОПИСАНИЕ вместе с соответствующей ценой в столбце ЗАРЯДЫ В USD и сохранить их как словарь, даже если строки подзаголовков не совпадают в разных текстовых файлах ,