Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 重新创建一个句子,重新创建的句子缺少所有逗号_Python - Fatal编程技术网

Python 重新创建一个句子,重新创建的句子缺少所有逗号

Python 重新创建一个句子,重新创建的句子缺少所有逗号,python,Python,我正在尝试创建一个程序,该程序应该能够将一个文件压缩到一个单词列表和位置列表中,以重新创建原始文件。它还应该能够获取压缩文件,并重新创建原始文件的全文,包括标点符号和大写字母 到目前为止,我有: file = open("task3paragraph.txt", "w") file.write ("Two little dicky birds sitting on a wall, one named Peter, one named Paul. Fly away Peter, fly away

我正在尝试创建一个程序,该程序应该能够将一个文件压缩到一个单词列表和位置列表中,以重新创建原始文件。它还应该能够获取压缩文件,并重新创建原始文件的全文,包括标点符号和大写字母

到目前为止,我有:

file = open("task3paragraph.txt", "w")
file.write ("Two little dicky birds sitting on a wall, one named Peter, one 
named Paul. Fly away Peter, fly away Paul, come back Peter, come back 
Paul.Into the gardens the little birds go, looking for worms that hide down 
low. Peter can’t catch one, neither can Paul, back home Peter, back home 
Paul!")
file.close()


file = open("task3paragraph.txt", "r")
paragraph = file.read()
para  = paragraph.split()
positions = [para.index(x)+1 for x in para]
para2 = str(para)
pos = str(positions)
file.close()


file = open("task3lists.txt", "w")
file.write(para2)
file.write("\n")
file.write(pos)
file.close()


file = open("task3lists.txt", "r")
words = file.readlines()
sentence = words[0].replace("
[","").replace("]","").replace("'","").replace(",","")
file.close()


file = open("task3recreated", "w")
file.write(sentence)
file.close()
除了在我运行它的时候,它工作得很好,因为重新创建的句子没有逗号:

两只小鸟坐在墙上,一只叫彼得,一只叫保罗。飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走,飞走。彼得抓不到一个,保罗也抓不到回家彼得回家保罗

它遗漏了原句中的所有逗号:

两只小鸟坐在墙上,一只叫彼得,一只叫保罗。飞走彼得,飞走保罗,回来彼得,回来保罗。小鸟们进入花园,寻找隐藏在低处的虫子。彼得抓不到一个,保罗也抓不到,回家彼得,回家保罗

我希望我重新创建的句子具有与原始句子相同数量的逗号。我怎么修理它

  • 此外,我删除了.replace(“,”,”),这使情况变得更糟,因为它给了我太多的逗号: 两个,小,迪克,小鸟,坐在墙上,一个叫彼得,一个叫保罗,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞,飞

您可以替换:

sentence = words[0].replace("[","").replace("]","").replace("'","").replace(",","")
与:


不应使用空字符串替换所有逗号,而应仅替换前面带有引号的逗号

嗯,您有
replace(“,”,“”)
所以您正在积极寻找逗号,并用空字符串替换它们。如果删除它会发生什么?@roganjosh我试过了,每个单词后面都有一个逗号,有时每个单词后面都有两个逗号OK,所以问题是你正在将列表的字符串表示形式存储在
para2=str(para)
等中。你没有一个项目列表,而是有一个看起来像列表的字符串,以及分隔列表中项目的逗号已成为不需要的,该字符串中的实际逗号。有几种方法可以实现这一点,或者考虑另一种存储原始数据的方法,或者在这个问题之后进行清理,我认为这没什么用处。根据赋值,我认为应该将数据存储为文件中的单独行,而不是整个字符串,但我不确定.re.finditer(pattern,string[,flags])返回一个迭代器,在字符串中的re模式的所有非重叠匹配上生成MatchObject实例。从左到右扫描字符串,并按找到的顺序返回匹配项。空匹配将包含在结果中,除非它们触及另一个匹配的开头。您首先需要决定如何在列表中存储标点符号。应该
保罗
Paul、
Paul
是否被视为不同的词?这可能是最简单的解决办法。或者,您可以将标点符号存储为单独的单词,例如,
[…'one'、'named'、'Peter'、'、'one'…]
sentence = words[0].replace("[","").replace("]","").replace("',","").replace("'", "")