用字符串中的所有字母替换字符,并将生成的输出存储在列表中 Python

Replace a character with all alphabet in a string and store the generate the output in a list with Python

我想用所有字母替换字符串中的每个字符,并将输出保存在列表中,以便最近在 NLP 项目中使用它。

例如

var='abc'

预期输出

['bbc','cbc','dbc','ebc',...,'aac','acc','adc','aec',...,'aba','abb','abd','abe'...]

如何使用 Python 执行此操作?谢谢

/尝试了一些代码但没有成功

您可以使用下面的 列表理解 表达式实现此目的:

>>> import string
>>> var='abc'

#                 to get the string of all the lowercase alphabets v
>>> [var[:i]+s+var[i+1:]for i in range(len(var)) for s in string.lowercase if s!=var[i]]

这将 return:

[
 'bbc', 'cbc', 'dbc', 'ebc', 'fbc', 'gbc', 'hbc', 'ibc', 'jbc', 'kbc', 'lbc', 'mbc', 'nbc', 'obc', 'pbc', 'qbc', 'rbc', 'sbc', 'tbc', 'ubc', 'vbc', 'wbc', 'xbc', 'ybc', 'zbc', 
 'aac', 'acc', 'adc', 'aec', 'afc', 'agc', 'ahc', 'aic', 'ajc', 'akc', 'alc', 'amc', 'anc', 'aoc', 'apc', 'aqc', 'arc', 'asc', 'atc', 'auc', 'avc', 'awc', 'axc', 'ayc', 'azc', 'aba', 'abb', 'abd', 'abe', 'abf', 'abg', 'abh', 'abi', 'abj', 'abk', 
 'abl', 'abm', 'abn', 'abo', 'abp', 'abq', 'abr', 'abs', 'abt', 'abu', 'abv', 'abw', 'abx', 'aby', 'abz']

如果您要使用整个字母表,要替换什么? 看起来你只是想为一定数量的字母生成所有可能的字母排列。

为此:

import itertools
import string
vars = [''.join(i) for i in itertools.product(string.ascii_lowercase, repeat = 3)]

会起作用

或者通过这个:

import itertools

allChars = "abcdefghijklmnopqrstuvwxyz"

allTriplets = itertools.permutations(allChars,3)
all = [''.join(x) for x in allTriplets if x != ('a','b','c')]
print(all)

这将生成 allChars 中所有字符的所有长度为 3 的排列(作为元组)- 列表理解然后将元组连接到字符串并将它们添加到列表中。

你可以试试这个:

from string import ascii_lowercase as l 
import itertools
var='abc'
final_data = list(itertools.chain.from_iterable([[var[:i]+c+var[i+1:] for c in l if var[i] != c] for i in range(len(var))]))

输出:

['bbc', 'cbc', 'dbc', 'ebc', 'fbc', 'gbc', 'hbc', 'ibc', 'jbc', 'kbc', 'lbc', 'mbc', 'nbc', 'obc', 'pbc', 'qbc', 'rbc', 'sbc', 'tbc', 'ubc', 'vbc', 'wbc', 'xbc', 'ybc', 'zbc', 'aac', 'acc', 'adc', 'aec', 'afc', 'agc', 'ahc', 'aic', 'ajc', 'akc', 'alc', 'amc', 'anc', 'aoc', 'apc', 'aqc', 'arc', 'asc', 'atc', 'auc', 'avc', 'awc', 'axc', 'ayc', 'azc', 'aba', 'abb', 'abd', 'abe', 'abf', 'abg', 'abh', 'abi', 'abj', 'abk', 'abl', 'abm', 'abn', 'abo', 'abp', 'abq', 'abr', 'abs', 'abt', 'abu', 'abv', 'abw', 'abx', 'aby', 'abz']