私はこれで一日中髪を引っ張ってきました。beautifulsoupでタグ属性を抽出する
import arff
from xml.etree import ElementTree
import re
from StringIO import StringIO
import BeautifulSoup
from BeautifulSoup import BeautifulSoup
totstring=""
with open('reut2-000.sgm', 'r') as inF:
for line in inF:
string=re.sub("[^0-9a-zA-Z<>/\s=!-\"\"]+","", line)
totstring+=string
soup = BeautifulSoup(totstring)
bodies = list()
topics = list()
tags = list()
for a in soup.findAll("body"):
bodies.append(a)
for b in soup.findAll("topics"):
topics.append(b)
for item in soup.findAll('REUTERS'):
tags.append(item['TOPICS'])
outputstring=""
for x in range(0,len(bodies)):
if topics[x].text=="":
continue
outputstring=outputstring+"<TOPICS>"+topics[x].text+"</TOPICS>\n"+"<BODY>"+bodies[x].text+"</BODY>\n"
outfile=open("output.sgm","w")
outfile.write(outputstring)
outfile.close()
print tags[0]
file.close
:私は、次のコードを持って、私はLEWISSPLITの値を取得し、リストに
それを格納することはできません
<REUTERS LEWISSPLIT="TRAIN">
:基本的には私のようなタグ から情報を抽出することができませんいくつかの古いreuters XMLを解析すると、少しこのように見えます。
<!DOCTYPE lewis SYSTEM "lewis.dtd">
<REUTERS TOPICS="YES" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" OLDID="5544" NEWID="1">
<DATE>26-FEB-1987 15:01:01.79</DATE>
<TOPICS><D>cocoa</D></TOPICS>
<PLACES><D>el-salvador</D><D>usa</D><D>uruguay</D></PLACES>
<PEOPLE></PEOPLE>
<ORGS></ORGS>
<EXCHANGES></EXCHANGES>
<COMPANIES></COMPANIES>
<UNKNOWN>
C T
f0704reute
u f BC-BAHIA-COCOA-REVIEW 02-26 0105</UNKNOWN>
<TEXT>
<TITLE>BAHIA COCOA REVIEW</TITLE>
<DATELINE> SALVADOR, Feb 26 - </DATELINE><BODY>Showers continued throughout the week in
the Bahia cocoa zone, alleviating the drought since early
January and improving prospects for the coming temporao,
although normal humidity levels have not been restored,
Comissaria Smith said in its weekly review.
</BODY></TEXT>
</REUTERS>
<REUTERS TOPICS="NO" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" OLDID="5545" NEWID="2">
<DATE>26-FEB-1987 15:02:20.00</DATE>
<TOPICS></TOPICS>
<PLACES><D>usa</D></PLACES>
<PEOPLE></PEOPLE>
<ORGS></ORGS>
<EXCHANGES></EXCHANGES>
<COMPANIES></COMPANIES>
<UNKNOWN>
F Y
f0708reute
d f BC-STANDARD-OIL-<SRD>-TO 02-26 0082</UNKNOWN>
<TEXT>
<TITLE>STANDARD OIL <SRD> TO FORM FINANCIAL UNIT</TITLE>
<DATELINE> CLEVELAND, Feb 26 - </DATELINE><BODY>Standard Oil Co and BP North America
Inc said they plan to form a venture to manage the money market
borrowing and investment activities of both companies.
BP North America is a subsidiary of British Petroleum Co
Plc <BP>, which also owns a 55 pct interest in Standard Oil.
The venture will be called BP/Standard Financial Trading
and will be operated by Standard Oil under the oversight of a
joint management committee.
</BODY></TEXT>
</REUTERS>
<REUTERS TOPICS="NO" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" OLDID="5546" NEWID="3">
<DATE>26-FEB-1987 15:03:27.51</DATE>
<TOPICS></TOPICS>
<PLACES><D>usa</D></PLACES>
<PEOPLE></PEOPLE>
<ORGS></ORGS>
<EXCHANGES></EXCHANGES>
<COMPANIES></COMPANIES>
<UNKNOWN>
F A
f0714reute
d f BC-TEXAS-COMMERCE-BANCSH 02-26 0064</UNKNOWN>
<TEXT>
<TITLE>TEXAS COMMERCE BANCSHARES <TCB> FILES PLAN</TITLE>
<DATELINE> HOUSTON, Feb 26 - </DATELINE><BODY>Texas Commerce Bancshares Inc's Texas
Commerce Bank-Houston said it filed an application with the
Comptroller of the Currency in an effort to create the largest
banking network in Harris County.
The bank said the network would link 31 banks having
13.5 billion dlrs in assets and 7.5 billion dlrs in deposits.
Reuter
</BODY></TEXT>
</REUTERS>
私は、特殊文字を削除し、本体の内容や話題のタグの両方を抽出し、それらのうちの新しいXMLの構築に興味を持っています:
<topic>oil</topic>
<body>asdsd</body>
<topic>grain</topic>
<body>asdsdds</body>
私はLEWISSPLIT
の値に基づいて、このデータを分割したいです私はこれまでのところ、すべてのことを、それを分割して、それをルワイススプリットの価値にすることができました。
<reuters>
タグから値を抽出できないためです。私はこのウェブサイトからの多くの異なる技術や公式ドキュメントを試してみましたが、
for item in soup.findAll('REUTERS'):
tags.append(item['LEWISSPLIT'])
print tags[0]
を実行しているときに、地球上で、それはとても難しいからLEWISSPLIT属性の値を抽出することであるのはなぜすべては[]
です<REUTERS>
タグ?
お読みいただきありがとうございます。
は小文字にされているはずです "lewissplit" と一緒に
"ロイター"、またExtracting tag information with beautifulsoup and python
何が起こるの'soup.findAll( 'REUTERS')'?あなたはどのような出力を得ていますか? 'soup.findAll( 'reuters')'を試しましたか?私はあなたが提供したXMLを解析したとき、BeautifulSoupが小文字。 –