2017-12-29 6 views
-1

문자열의 각 문자를 모든 알파벳으로 바꾸고 최근에 해당 문자로 작업하도록 목록에 저장하고 싶습니다. NLP 프로젝트 예를 들어문자열의 모든 알파벳으로 문자를 바꾸고 결과를 파이썬으로 목록에 저장합니다.

var='abc' 

출력 내가 파이썬이 할 수있는 방법

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

원본 문자열 인 ex post를 펀치 아웃하는 것이 가장 멋진 해결책입니다. – 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 [문자열의 모든 문자 아리조나 문자로 문자열로 문자열을 변경]의
관련 문제