重复的单词 Python
Duplicate word Python
我想制作一个检测重复单词的程序,如下例所示:
"至少必须输入一个值
输入以计算平均值"
我们可以看到重复“输入”,我想找到一种方法来检测这种情况。 \
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()
我已经这样做了,但我不知道如何检测重复的单词,因为它们可能在同一行中,或者一个在一行文本的末尾,另一个在文本行的开头接下来,如示例
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 循环在按每个 space 拆分字符串时检查所有单词。然后它打印出来,obv 你可以改变它做任何事。
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 位输入了重复的单词
使用itertools.pairwse
(python≥3.10):
[a for a,b in pairwise(text.split()) if a==b]
注意。对于3.10以下的python,您可以导入pairwise
recipe
输入:
text = """At least one one value must be entered
entered in order to compute the average"""
输出:['one', 'entered']
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}.')
当我保存你的例子时
At least one value must be entered
entered in order to compute the average
作为文本文件,运行上面的代码并输入文件名作为输入,输出为:
Duplicated word: "entered" at index 7.
我想制作一个检测重复单词的程序,如下例所示:
"至少必须输入一个值
输入以计算平均值"
我们可以看到重复“输入”,我想找到一种方法来检测这种情况。 \
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()
我已经这样做了,但我不知道如何检测重复的单词,因为它们可能在同一行中,或者一个在一行文本的末尾,另一个在文本行的开头接下来,如示例
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 循环在按每个 space 拆分字符串时检查所有单词。然后它打印出来,obv 你可以改变它做任何事。
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 位输入了重复的单词
使用itertools.pairwse
(python≥3.10):
[a for a,b in pairwise(text.split()) if a==b]
注意。对于3.10以下的python,您可以导入pairwise
recipe
输入:
text = """At least one one value must be entered
entered in order to compute the average"""
输出:['one', 'entered']
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}.')
当我保存你的例子时
At least one value must be entered
entered in order to compute the average
作为文本文件,运行上面的代码并输入文件名作为输入,输出为:
Duplicated word: "entered" at index 7.