使用间隔字符生成特定长度的单词序列

2024-05-16 18:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个文本文件中有一个单词列表,希望将所有可能的组合创建成一个句子,并使用特定长度的额外间隔符(但始终在字母表ABCD之间移动),整个句子的长度应该只有30-37个字符

Text_file 

Computers
laptops
ipads
phones
desktops
TV
kindle
LED

因此,所需的句子将采用上述列表中的单词格式,间隔符可以是ABCD的组合(5或10个字符)

一个示例句子是(这个是32个字符,但可以在30-37之间)

  kindleABCDATVComputersABCDDCABAB
  TVABCDABCDBALEDABCDAlaptopsABCDA

格式是 单词间隔符(5或10个字符)单词间隔符(10或5个字符)单词间隔符(10或5个字符)取决于30-37的长度

我尝试在R中使用gtools包(其中n是向量中的字数,R是预期的字数,x是输入)。这里的问题是无法控制长度。如果我能做到这一点,那么我可以添加我自己的间隔

 permutations(n=8,r=2,v=x)

Tags: text列表间隔格式单词字母表句子file
1条回答
网友
1楼 · 发布于 2024-05-16 18:24:28

您可以使用内置库itertools中的permutations

import random
import itertools

words = ['Computers', 'laptops', 'ipads', 'phones', 'desktops', 'TV', 'kindle', 'LED']
letters = ['A', 'B', 'C', 'D', 'E']

def combinations(words):
    options = set()
    for perm in list(itertools.permutations(words)):
        s = perm[0]
        i = 1
        while len(s) < 30 and i < len(perm):
            s += ''.join(random.choice(letters) for _ in range(5))
            s += perm[i]
            i += 1
        options.add(s)
    return options

print(combinations(words))

结果:
(40320种不同的组合)

{
'LEDDDBAAphonesBEDACipadsBACEDlaptops',
'desktopsBEABBkindleEDABEipadsADDABTV',
'TVABEBDComputersBBDBBdesktopsBBECEphones',
'laptopsDDBEBLEDEBEACTVCBAAAphones',
'kindleABDDATVDEDBBComputersCACDDLED',
'kindleEBAECLEDACEDBipadsDEDEAlaptops',
'phonesAEDDDkindleCDEACComputers',
'ComputersADADDphonesECADDipads',
'ipadsDDEADlaptopsBEBBDdesktops',
...
}

相关问题 更多 >