重复单词Python

a7qyws3x  于 2022-12-05  发布在  Python
关注(0)|答案(4)|浏览(112)

我想做一个程序,检测重复的话,如下面的例子:
“必须至少输入一个值
以计算平均值”
我们可以看到“entered”重复出现,我想找到一种方法来检测这种情况。\

archivo = str(input("Ingrese la ubicación del archivo: "))
inf = open(archivo, "r")

lineas = inf.readlines()
lin = []

for a in lineas:
    lin.append(a.strip())
    
cadena = ' '.join([str(item) for item in lin])
list_cadena = cadena.split()

我已经这样做了,但我不知道如何检测重复的单词,因为它们可能在同一行,也可能发生一个在一行文本的末尾,另一个在下一行文本的开头,如示例所示

pgky5nke

pgky5nke1#

str.strip()用于删除空格。您需要使用str.split()来将单词分隔成列表。要获得所有单词的平面列表,请在构建列表时使用extend()而不是append()(否则您将获得列表的列表)。with语句在这里很有用,这样您就不必手动关闭文件。
当你有了单词列表,你可以遍历它,并将每个单词与前一个单词进行比较,如果它们相同,就触发一些动作(例如打印输出):

archivo = input("Ingrese la ubicación del archivo: ")

with open(archivo, "r") as inf:
    lineas = inf.readlines()
    lin = []
    for a in lineas:
        lin.extend(a.split())

for i in range(1, len(lin)):
    if lin[i - 1] == lin[i]:
        print(f'Duplicated word: "{lin[i]}" at index {i}.')

当我保存你的例子时
必须至少输入一个值
以计算平均值
作为文本文件,运行上面的代码并输入文件名作为输入,输出为:
重复的单词:在索引7处“输入”。

jdzmm42g

jdzmm42g2#

text = 'i like donkey donkey'
words = text.split(' ')

for i in range(0, len(words)):  
    count = 1;  
    for j in range(i+1, len(words)):  
        if(words[i] == (words[j])):  
            count = count + 1;  
            words[j] = '0';  
              
    if(count > 1 and words[i] != '0'):  
        print(words[i]);  

# output -> donkey

这段代码使用了一个for循环,在按每个空格拆分字符串时检查所有的单词。然后将它们打印出来,当然你可以改变它来做任何事情。

uubf1zoe

uubf1zoe3#

string = 'At least one value must be entered entered in order to compute the average'

string_list = string.split(' ')

for i in range(len(string_list)):
    duplicate = string_list.count(string_list[i])

    if duplicate > 1: # 2 or more
        # heureka = duplicate
        print(f'Duplicate word {string_list[i]} at position {i}')

输出:
在位置6处输入了重复单词
在位置7处输入了重复单词

fd3cxomn

fd3cxomn4#

使用itertools.pairwse(Python ≥ 3.10):

[a for a,b in pairwise(text.split()) if a==b]
  • 注意:对于Python 3.10以下的版本,您可以导入pairwise配方 *

输入:

text = """At least one one value must be entered
entered in order to compute the average"""

输出:['one', 'entered']

相关问题