我的数据如下:
<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中编写代码。它根据空间分割字符串。然而,它并没有解决我的目的,因为使用它“太阳,2012年3月25日14:15:37 GMT”也被分裂。有没有其他方法可以使用Python实现这一目标?
答案 0 :(得分: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()
答案 1 :(得分:0)
是N3 / Turtle吗?如果是这样,我认为你想要RDFlib。
答案 2 :(得分:0)
字符串中的空格有什么问题? 看起来你只对最后两个字段感兴趣,这些字段将被分割成任意数量的块。
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
嗯,我不知道究竟应该用结束点做什么,但除非你必须保持你的字符串具有完全相同的空间量,否则应该没问题。