文字列を反復処理することで解決できることがわかっている問題を解決しようとしていますが、Pythonを使用すると、よりエレガントに解決できる正規表現があると確信しています...反復プロセスに頼ることを諦めているような気がします。
基本的に、プロパティの単一のセルにリストがあり、どのプロパティがサブプロパティで、どのプロパティがサブサブプロパティであるかを調べて、それらが下にあるプロパティと一致させる必要があります。例えば:
ID=11669アンタムラテライトニッケル/フェロニックケル操作
ID=19807ゲベラテライトニッケル鉱山
ID=19808ジーアイランドラテライトニッケル鉱山
ID=18923モルノポラテライトニッケル鉱山
ID=29411ポ
マラアラテライトニッケル鉱山
ID=29412マニアンラテライトニッケルプロジェクト
ID=11665南東スラウェシラテライトニッケルプロジェクト
ID=27877バフブルラテライトニッケル鉱床
生成する必要があります:
MasterProp, SubProp
11669, 19807
11669, 19808
11669, 18923
11669, 29411
11669, 19806
19806, 29412
11669, 11665
11665, 27877
11669と2番目のレベルを取得するのは簡単です-私が見つけた最初のIDを取得して、残りすべてに追加するだけです。しかし、「第3レベル」を取得するのははるかに困難です
私は以下を試しました
tags = re.compile('ID=(\d+).+(\ \;){8}')
for tag, space in tags.findall(str(cell)):
print tag
しかし、これにより、8スペースより前の最後のIDではなく8スペースより前の最初のIDが得られます...したがって、上記の例では、11669
ではなく取得し19806
ます。ID=(\d+)
8つのスペースの間に他にない場所を見つけるという表現があるのではないかと思いますID=(\d+)
が、それは私の(初心者の)能力を超えていることが証明されています!どんな助けでも歓迎されます...