On 15/06/19 9:35 PM, mhysnm1...@gmail.com wrote:
This is a follow-up on my previous question for removing elements. Below is
the code I am currently using. I am removing the elements at the end of the
outer loop. The data structure goes along this:
[
['123123',[2019-2-18', 'transaction text', 'amount'],
v ['123123',[2019-2-18', 'transaction text', 'amount'],
['123123',[2019-2-18', 'transaction text', 'amount']
]
The 2nd column where the transaction text I am modifying the content and
using the end result of the built-up words as the string match as you will
see in the code. This is all working fine. The last loop in the code I am
trying to delete the elements in reverse order. This doesn't work. The
length of the list reduces by 1. When it should have reduced by 42. Is the
logic wrong? This is in Python 3.6 under windows 10.
unknown_transactions.sort(key=lambda x: x[2])
while True:
# re-initialise each time the current transaction text has been processed.
for row in unknown_transactions:
# remove common words from transactions which are not required. Such
as 'WITHDRAWAL' and 'DEPOSIT'.
line = regex_transaction(row[2])
# If the common words are not found, return a null and do not modify
the transaction description.
(from a very weak understanding of your previous question and the total
code-base thus far)
Consideration nr1:
Write the code as comments first. Initially these will be at a fairly
'high level'. These comments can later be turned into function/method
names, and more comments added within those. Wash, rinse, and repeat.
The idea is to help re-state your thinking into Python code, and to
structure the code into functional units. Even skilled Python-coders
often find that this helps to keep the use-case foremost in-mind.
Consideration nr2:
(assuming that the total data-volume is easily RAM-resident)
Rather than (appearing to) taking-in a 'group' of transactions and then
select them according to ease/difficulty of 'translation', gradually
removing/whittling the numbers down - hopefully to zero; why not
consider adding another field to each record, which will note if it has
already been processed (by whichever method) or conversely, which
list-elements are yet to be completed? Thus each method of
interpretation will first check the 'completed' field, and if not
complete, apply the relevant analysis... Thus there is no concept of
'removal' and no danger of 'losing' anything!
--
Regards =dn
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor