映射字符串空间到单词列表?

阿比

我有一个字符串

flagged_line = "V. Divakar Botcha1,2, Mengdie Zhang1, Kuilong Li1,2, Hong Gu1,2, Zhonghui Huang1, Jianhui Cai3, Youming Lu1, Wenjie Yu3, and Xinke Liu1*  "

和单词列表为

words = ['V.', 'Divakar', 'Botcha', '1', ',', '2', ',', 'Mengdie', 'Zhang', '1', ',', 'Kuilong', 'Li', '1', ',', '2', ',', 'Hong', 'Gu', '1', ',', '2', ',', 'Zhonghui', 'Huang', '1', ',', 'Jianhui', 'Cai', '3', ',', 'Youming', 'Lu', '1', ',', 'Wenjie', 'Yu', '3', ',', 'and', 'Xinke', 'Liu', '1', '*']

它们都来自2个不同的程序,现在我需要将字符串中的空格映射到列表中的单词,例如:(请注意,单词后面的空格是空格,后跟空格)

['V. ', 'Divakar ', 'Botcha', '1', ',', '2', ', ', 'Mengdie ', 'Zhang', '1', ', ', 'Kuilong ', 'Li', '1', ',', '2', ', ', 'Hong ', 'Gu', '1', ',', '2', ', ', 'Zhonghui ', 'Huang', '1', ', ', 'Jianhui ', 'Cai', '3', ', ', 'Youming ', 'Lu', '1', ', ', 'Wenjie ', 'Yu', '3', ', ', 'and ', 'Xinke ', 'Liu', '1', '*  ']

我正在尝试按字符检查它们,然后分配空格

index_str = 0
for elem in words:
    for e in elem:
        if e == flagged_line[index_str]:
            index_str+=1
            pass
        else:
            index_str+=1
            elem = elem+' '  # issue not generalized for spaces
            print('"',elem,'"')

更新:

list元素将包含空间以帮助映射,例如

在字符串中是

"V. Divakar  "

列表是

['V.','Divakar']

那么最终列表应该是

['V. ','Divakar  ']

稍后,我将在列表上进行迭代并将该元素附加到我的下一个函数中。

最后也可以有多个空格

瑞纳克

我已经假设flagged_line并且words完全匹配。您可以单步执行此操作,只需保留indexof flagged_line,然后跳过thelen(word)即可查找一个单词后是否有空格(如果有的话),然后添加到您的结果中:

flagged_line = "V. Divakar Botcha1,2, Mengdie Zhang1, Kuilong Li1,2, Hong Gu1,2, Zhonghui Huang1, Jianhui Cai3, Youming Lu1, Wenjie Yu3, and Xinke Liu1*  "
words = ['V.', 'Divakar', 'Botcha', '1', ',', '2', ',', 'Mengdie', 'Zhang', '1', ',', 'Kuilong', 'Li', '1', ',',
         '2', ',', 'Hong', 'Gu', '1', ',', '2', ',', 'Zhonghui', 'Huang', '1', ',', 'Jianhui', 'Cai', '3', ',',
         'Youming', 'Lu', '1', ',', 'Wenjie', 'Yu', '3', ',', 'and', 'Xinke', 'Liu', '1', '*']

words_with_spaces = []
idx = 0
for i, word in enumerate(words):
    idx += len(word)
    cur_word = word
    while idx < len(flagged_line) and flagged_line[idx] == ' ':
        cur_word += ' '
        idx += 1
    words_with_spaces.append(cur_word)

print(words_with_spaces)

输出:

['V. ', 'Divakar ', 'Botcha', '1', ',', '2', ', ', 'Mengdie ', 'Zhang', '1', ', ', 'Kuilong ', 'Li', '1', ',', '2', ', ', 'Hong ', 'Gu', '1', ',', '2', ', ', 'Zhonghui ', 'Huang', '1', ', ', 'Jianhui ', 'Cai', '3', ', ', 'Youming ', 'Lu', '1', ', ', 'Wenjie ', 'Yu', '3', ', ', 'and ', 'Xinke ', 'Liu', '1', '*  ']

希望对您有所帮助,如有其他问题,请发表评论。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章