Kalpesh, It is nice to see how a user could use Python to get at this information, but it seems to me that having to supply a list of symbols to the script defeats the point of trying to find those symbols that have secondary namespaces.
I wonder whether there is a Python analog for "find all securities that are not currencies" that Wm provided in his SQL... David On August 12, 2026 3:13:55 AM GMT+05:30, Kalpesh Patel <[email protected]> wrote: >Script attached in-case spaces gets munged up by the list server which I >already show done so. > >-----Original Message----- >From: Kalpesh Patel <[email protected]> >Sent: Tuesday, August 11, 2026 4:34 PM >To: 'Wm Tarr' <[email protected]>; '[email protected]' ><[email protected]> >Subject: RE: [GNC] Trading accounts > >Here is the Python script that will do so. You'll need to provide full path to >your compressed XML data file as the first argument, followed by list of >symbols to find namespace(s) for. All parameters separated by one or more >spaces. > >Example >c:\CloudDrives\OneDrive\QuickenStuff\HELPERS>python display_namespaces.py >c:\data\gnucash\example.gnucash NANC NANC:CBOE NANC:CBOE - US > >You will need Python 3.X installed, along with lxml and gzip libraries >installed in Python for the script to work. You would copy & paste everything >between '# ---' delimiters to a file for a fully running script. > >Now you have both ways to do it. Hope these helps. > > ># --- Start of Script >from lxml import etree >import gzip >import sys > >if len(sys.argv) > 2: > tickers = [ticker.strip() for ticker in sys.argv[2:]] > data_file = sys.argv[1] >else: > print ("\nProvide two positional parameters:") > print (" File name as the first.") > print (" Specify one or more tickers as second and onward separated by a > space.") > exit() > >with gzip.open(data_file, "rb") as f: > context = etree.iterparse(f, > tag='{http://www.gnucash.org/XML/gnc}commodity') > > for event, elem in context: > > symbol = elem[1].text > namespace = elem[0].text > elem.clear() > > if any(symbol.lower() == ticker.lower() for ticker in tickers): > print ("{}:{}".format(symbol, namespace)) # --- End of > Script > >-----Original Message----- >From: Wm Tarr <[email protected]> >Sent: Monday, August 10, 2026 12:56 PM >To: [email protected] >Subject: Re: [GNC] Trading accounts > >I don't think you can do it in gnc but here is some SQL that does it > >=== > >with m_cnt as ( > >select mnemonic, count(*) as cnt > >from commodities > >group by mnemonic > >having cnt > 1 > >) > >select namespace, mnemonic > >from commodities > >where mnemonic in (select mnemonic from m_cnt) > >; > > >=== > >Wm > >On 2026-08-10 01:36, Fred Tydeman wrote: >> >> Anyone know of a way to find stocks in more than one Namespace? >> >> _______________________________________________ gnucash-user mailing list [email protected] To update your subscription preferences or to unsubscribe: https://lists.gnucash.org/mailman/listinfo/gnucash-user ----- Please remember to CC this list on all your replies. You can do this by using Reply-To-List or Reply-All.
