0

我有一条线,我想分成三个部分:

line4 = 'http://www.example.org/lexicon#'+synset_offset+' http://www.monnetproject.eu/lemon#gloss '+gloss+''

变量光泽包含完整的句子,我不想被拆分。我该如何阻止这种情况发生?

最后的 3 个拆分部分应该是:

'http://www.example.org/lexicon#'+synset_offset+'

http://www.monnetproject.eu/lemon#gloss

'+gloss+''

跑完之后triple = line4.split()

4

3 回答 3

2

我很难理解,但为什么不直接创建一个列表:

line4 = [
    'http://www.example.org/lexicon#' + synset_offset,
    'http://www.monnetproject.eu/lemon#gloss',
    gloss
]

简化的示例 - 不要将它们全部连接在一起,然后再次将它们分开,只需首先将它们正确连接:

a = 'hello'
b = 'world'
c = 'i have spaces in me'

d = ' '.join((a,b,c)) # <- correct way
# hello world i have spaces in me
print ' '.join(d.split(' ', 2)) # take joined, split out again making sure not to split `c`, then join back again!?
于 2013-06-17T16:05:57.803 回答
0

如果它们都以“http”开头,您可以使用 http 作为分隔符来拆分它们,否则您可以执行两个步骤:

首先使用空格或http从字符串中提取第一个url as firstSplit=line4.split(' ', 1)

firstString= firstSplit.pop(0) -> pop the first url
secondSplit =firstSplit.join() -> join the rest
secondSplit[-1].split('lemon#gloss') ->splits the remaining two
于 2013-06-17T16:05:26.730 回答
0
>>> synset_offset = "foobar"
>>> gloss = "This is a full sentence."
>>> line4 = 'http://www.example.org/lexicon#'+synset_offset+' http://www.monnetproject.eu/lemon#gloss '+gloss
>>> import string
>>> string.split(line4, maxsplit=2)
['http://www.example.org/lexicon#foobar', 'http://www.monnetproject.eu/lemon#gloss', 'This is a full sentence.']

不知道你想在这里做什么。如果通常您希望避免拆分关键字,您应该这样做:

>>> string.split(line:line.index(keyword)) + [line[line.index(keyword):line.index(keyword)+len(keyword)]] + string.split(line[line.index(keyword)+len(keyword):])

如果字符串的光泽(或任何关键字部分)是结尾部分,则该切片将只是一个空字符串'';如果是这种情况,请不要附加它,或者如果你这样做,请删除它。

于 2013-06-17T16:41:17.683 回答