Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 输出两次-在发布此问题前30分钟更新问题_Python_List_Indexing_Append_Range - Fatal编程技术网

Python 输出两次-在发布此问题前30分钟更新问题

Python 输出两次-在发布此问题前30分钟更新问题,python,list,indexing,append,range,Python,List,Indexing,Append,Range,这是我的密码 import re with open('newfiles.txt') as f: k = f.read() p = re.compile(r'[\w\:\-\.\,\']+|[^[\w\:\-\.\'\,]\s]') originaltext = p.findall(k) uniquelist = [] for word in originaltext: if word not in uniquelist:

这是我的密码

import re
    with open('newfiles.txt') as f:
        k = f.read()
    p = re.compile(r'[\w\:\-\.\,\']+|[^[\w\:\-\.\'\,]\s]')
    originaltext = p.findall(k)
    uniquelist = []
    for word in originaltext:
        if word not in uniquelist:
            uniquelist.append(word)
    indexes = ' '.join(str(uniquelist.index(word)+1) for word in originaltext)
    n = p.findall(indexes)
    file = open("newfiletwo.txt","w")
    file.write (' '.join(str(e) for e in n))
    file.close()
    file = open("newfilethree.txt","w")
    file.write(' '.join(uniquelist))
    file.close()
    with open('newfiletwo.txt') as f:
        indexess = f.read()
    with open('newfilethree.txt') as f:
        differentwords = f.read()
    differentwords = p.findall(differentwords)
    indexess = [uniquelist.index(word) for word in originaltext] 
    for word in originaltext:
        if not word in differentwords:
            differentwords.append(word)
        i = differentwords.index(word)
        indexess.append(i)
    s = "" # the reconstructed sentence
    for i in indexess:
        s = s + differentwords[i] + " "
    print(s)
程序基本上获取一个外部文本文件,返回其位置的索引(如果有单词重复,则获取第一个位置),然后将位置保存为外部文件。在执行此操作时,我已拆分文本文件,包括拆分标点符号,并将文件中出现的不同单词和标点符号保存为外部文件。现在,对于困难的部分,使用这两个外部文件-索引和不同的分隔单词,我尝试重新创建原始文本文件,包括标点符号。但出现标题中显示的错误:

Traceback (most recent call last):
        File "E:\Python\Index.py", line 31, in <module>
           s = s + differentwords[i] + " "
    IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“E:\Python\Index.py”,第31行,在
s=s+differentwords[i]+“”
索引器:列表索引超出范围
我不想听起来粗鲁,但我是一个初学者,请尽量用一种简单的方式改变,因为我自己创造了这个。你们可能知道一种短得多的方法来实现这一点,但这是我可以处理的简单程度,代码的长度证明了这一点。我曾试图缩短原始文本文件,但证明没有用。有人知道错误发生的原因以及如何修复吗?我现在并不是在寻找效率,也许在再学习几个月之后,但最简单(我不介意太长)的答案将是最好的。对不起,我重复了很多次:-)

“newfiles”-一组带有标点符号的句子

更新


代码不显示错误,但打印原始句子两次。由于删除了第23行上的+1,错误消失。有人知道为什么输出会重复两次吗?

问题是,如何限定单词是什么,什么不是。例如,逗号是单词的一部分吗?在您的情况下,它并不是一个分隔符。所以你会得到一个单独的单词逗号,或点,等等。我无法访问您的输入,因此我只能提供示例:

p=re.compile(r'[\w\:\-\.\,]+\124;[^[\ w\:\-\.\,]\s]')

有一点——在本例中,“单词”、“单词”、“单词”、“单词”、“单词”、“单词”都是独立的单词。因为圆点和昏迷是单词的一部分。你不能一边吃蛋糕一边吃。要解决这个问题。。。如果分离前存在空白,则需要存储信息

更新: 哦,是的。双输出。存储在中间的文件是可以的。所以在那之后有一些东西被归档了。请看这两行:

i=不同的两个字索引(word)
追加索引(一)

它们需要在前面的if语句中

这是可疑的:
indexess=[uniquelist.index(word)+1表示原始文本中的单词]
。为什么要添加一个呢?@StevenRumbalski-WOW-thx-man,可能是一个bug,因为我认为python从零开始计数,可能是被搞糊涂了,忘了删除它。这改变了很多结果,但是整个文本文件重复了两次,并且标点符号和单词之间有空格,我猜是从单词中分割出来的。你知道如何解决这两个问题吗?@StevenRumbalski,如果你想知道“newfiles”只是几个带有标点符号的句子,这已经被编辑到question@StevenRumbalskiNvm,谢谢您的尝试:-)谢谢您的解释。但是你知道为什么输出会自动重复吗?它会把同一个东西打印两次。谢谢。它真的很有帮助。在这个问题上已经坚持了很长一段时间了:-)我能问一下,你加入正则表达式在这里做什么吗?比如这个正则表达式和我代码中已有的正则表达式有什么区别?后来我试着自己创建一个,类似于这个,但是我的代码不起作用。你能给我解释一下这个正则表达式是做什么的吗?对于python来说,有一个很好的工具——kiki。在Ubuntu上-
sudo-apt-get-install-kiki
。然后,您可以提供示例代码、正则表达式,并直观地测试不同的选项。有了它,请转到python文档重新模块,并尝试不同的选项。我刚刚找到佩奇--如果那样对任何人来说都比较容易的话…我知道已经有一段时间了,但是当你说“有一点——在这种情况下,‘单词’、‘单词’、‘单词’、‘单词’、‘单词’都是独立的单词。因为圆点和昏迷是单词的一部分。你不能一边吃蛋糕一边吃。要解决这个问题。。。如果分离前存在空白,则需要存储信息。”,我该怎么做?