2017-12-29 42 views
-1

文字列内の各文字をすべてのアルファベットに置き換え、出力をリストに保存して最近使用するNLPプロジェクト文字を文字列内のすべてのアルファベットに置き換えて、出力をPythonでリストに格納します。

例えば

var='abc' 

出力は、私はPythonのでこれを行うことができますどのように

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

を期待?おかげ

/として、いくつかのコードが、あなたはリスト内包の下式を使用して、これを達成することができる

+0

可能な重複:// stackoverflow.com/questions/47983212/change-a-string-into-a-string-with-the-letters-az-in-every-character-of-the-str) – pault

+2

試したコードを表示してくださいそれは失敗する。 –

答えて

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

元の文字列の元のポストを打ち抜きます。これが最も洗練されたソリューションです。 – lenz

0

またはこれに働くだろう:これは(タプルとして)allChars内のすべての文字の長さ3のすべての順列を生成する

import itertools 

allChars = "abcdefghijklmnopqrstuvwxyz" 

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

- list comprehensionはタプルを文字列に結合してリストに追加します。

+1

OPが正しく理解されていれば、「abc」はここにはいけません。 –

+0

@EricDuminilありがとう、それをキャッチしていない。それを固定した。 –

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'] 
(HTTPS [文字列のすべての文字でAZの文字で文字列に文字列を変更します]の
関連する問題