0

次の形式のデータがあります。

<a> <b> _:h1 <c>.
_:h1 <e> "200"^^<http://www.w3.org/2001/XMLSchema#integer> <f> .
_:h1 <date> "Mon, 30 Apr 2012 07:01:51 GMT" <p> .
_:h1 <server> "Apache/2" <df> .
_:h1 <last-modified> "Sun, 25 Mar 2012 14:15:37 GMT" <hf> .

Python を使用して次の形式に変換する必要があります。

<a> <b> _:h1.
<1> <c>.
_:h1 <e> "200"^^<http://www.w3.org/2001/XMLSchema#integer> .
<1> <f>.
_:h1 <date> "Mon, 30 Apr 2012 07:01:51 GMT".
<1> <p>.
_:h1 <server> "Apache/2" .
<1> <df>.
_:h1 <last-modified> "Sun, 25 Mar 2012 14:15:37 GMT" .
<1> <hf>.

str.split()メソッドを使用するPythonでコードを書きました。スペースに基づいて文字列を分割します。ただし、「Sun, 25 Mar 2012 14:15:37 GMT」を使用しても分割されるため、私の目的は解決しません。Pythonを使用してこれを達成する他の方法はありますか?

4

3 に答える 3

2

rfindまたはメソッドを使用して、rindex行内で最後に出現する を見つけることができ<ます。

data = """[your data]"""
data_new = ""
for line in data.splitlines():
    i = line.rfind("<")
    data_new += line if i == -1 else line[:i] + ". \n<1> " + line[i:] + "\n"
data_new = data_new.strip()
于 2013-07-22T12:45:55.490 に答える
0

N3/タートルですか?もしそうなら、 RDFlibが欲しいと思います。

参照: Python での Turtle/N3 RDF ファイルの読み取り

于 2013-07-22T09:38:28.093 に答える
0

文字列内のスペースの問題は何ですか? 最後の 2 つのフィールドのみに関心があるようです。これは、行が分割されたチャンクの数に関係なく存在します。

fields = line.split()
count = len(fields)
tag = fields[count - 2]
dot = fields[count - 1]
# Now print your line without last two fields
l1 = " ".join(fields[0:count - 2])
l2 = '<1> ' + tag + dot

エンドドットで何をするべきか正確にはわかりませんが、文字列をまったく同じ量のスペースで保持する必要がない限り、問題ありません。

于 2013-07-22T12:41:30.980 に答える