如何从职位列表中打印单词(和标点符号)

时间:2016-09-22 11:52:39

标签: python list

(删除代码以停止类别配对复制) 现在它将创建一个包含每个单词位置的文本文件,例如,如果我写了

“你好,我的名字是mika,你好”

该列表中的位置将是[1,2,3,4,5,6,2,1],它也会列出每个单词/标点符号,但只列出一次,所以在这种情况下它将是

['你好',',','我的','名字','是','mika']

现在唯一的事情是能够使用列表中的那些位置将单词重新回到原始句子中,这似乎是我无法做到的。  我确实尝试过搜索其他帖子,但它似乎只出现在其他人想要单词的位置而不是想要使用位置将单词放回句子中。 我还以为可以这样做:

for i in range(len(readlines[1])):

但老实说我不知道​​怎么回事。

编辑:这已经被@Abhishek解决了,谢谢。

3 个答案:

答案 0 :(得分:0)

indices = [1,2,3,4,5,6,2,1]
namelst = ['Hello', ',', 'my', 'name', 'is', 'mika']

newstr = " ".join([namelst[x-1] for x in indices])
print (newstr)

输出:

>> 'Hello , my name is mika , Hello'

我同意会有一些偏移/空格,但它会再次给你完整的句子

答案 1 :(得分:0)

代码:(标点后会删除空格)

postitions = [1,2,3,4,5,6,2,1]
wordslist = ['Hello', ',', 'my', 'name', 'is', 'mika']

recreated=''
for i in indices:
     w = namelst[i-1]
     if w not in ['(', ')', '?', ':', ';', ',', '.', '!', '/', '"', "'"]:
          w = ' ' + w
     recreated = (recreated + w).strip()

print (recreated)

<强>输出:

C:\Users\dinesh_pundkar\Desktop>python c.py
Hello, my name is mika, Hello
C:\Users\dinesh_pundkar\Desktop>

答案 2 :(得分:0)

您可以使用numpy执行此操作。

>>> import numpy as np
>>> indices = np.array([1,2,3,4,5,6,2,1])
>>> namelst = np.array(['Hello', ',', 'my', 'name', 'is', 'mika', ',', 'Hello'])
>>> ' '.join(namelst[indices-1])
'Hello , my name is mika , Hello'