1

次のXMLデータを解析しようとしています。

http://pastebin.com/UcbQQSM2

これは、私が遭遇する2種類のデータのほんの一例です。必要な住所情報を持っている会社と必要な情報を持っていない会社。

データから、次の3つの情報を収集する必要があります。

1)会社名

2)カンパニーストリート

3)会社の郵便番号

私は次のコードでこれを行うことができます:

#Creates list of Company names
CompanyList = []
for company in xmldata.findall('company'):
    name = company.find('name').text
    CompanyList.append(name)

#Creates list of Company zipcodes
ZipcodeList = []
for company in xmldata.findall('company'):
    contact_data = company.find('contact-data')
    address1 = contact_data.find('addresses')
    for address2 in address1.findall('address'):
        ZipcodeList.append(address2.find('zip').text)

#Creates list of Company streets
StreetList = []
for company in xmldata.findall('company'):
    contact_data = company.find('contact-data')
    address1 = contact_data.find('addresses')
    for address2 in address1.findall('address'):
        StreetList.append(address2.find('street').text)

しかし、それは私が望んでいることを実際には実行せず、私は私が望むことをどのように実行するかを理解することができません。ある種の「if」ステートメントになると思いますが、わかりません。

問題は、私が持っている場所です。

for address2 in address1.findall('address'):
    ZipcodeList.append(address2.find('zip').text)

for address2 in address1.findall('address'):
    StreetList.append(address2.find('street').text)

XMLに実際に通りの名前または郵便番号がリストされている場所をリストに追加するだけですが、リストが一致するように、その情報がリストされていない会社の目印が必要です。

これが理にかなっていることを願っています。さらに情報を追加する必要がある場合はお知らせください。

しかし、基本的には、会社の郵便番号/通りの名前がない場合は「なし」と入力し、ある場合は郵便番号/通りの名前を入力する方法を見つけようとしています。

任意のヘルプ/ガイダンスをいただければ幸いです。

4

1 に答える 1

1

悪いことをして、条件付き(三項)演算子を使用することをお勧めします。

StreetList.append(address2.find('street').text if address2.find('street').text else 'None')

したがって、このステートメントは、** address2.find('street')が空でない場合 はreturn address2.find('street')。text 、それ以外の場合はreturn'None'と言います。

さらに、同じテストを実行して両方の場所で呼び出す新しいメソッドを作成することもできます。私のPythonは錆びていますが、近づける必要があります。

def returnNoneIfEmpty(testText):
    if testText:
        return testText
    else:
        return 'None'

次に、それを呼び出します。

StreetList.append(returnNoneIfEmpty(address2.find('street').text))
于 2013-01-24T16:56:57.453 に答える