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

问题描述 投票:-1回答:4

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

例如

var='abc'

预期产出

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

我怎么能用Python做到这一点?谢谢

/尝试了一些代码,但没有运气

python python-3.x list nlp alphabetical
4个回答
2
投票

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

>>> 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]]

将返回:

[
 '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']

2
投票

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

对于:

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

会工作


0
投票

或者通过这个:

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的所有排列(作为元组) - 列表推导然后将元组连接到字符串并将它们添加到列表中。


0
投票

你可以试试这个:

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']
© www.soinside.com 2019 - 2024. All rights reserved.