0

I have string and I will do split for this string and then I will get 320 elements. I need to create 4 groups. Every group will be with 100 elements and the last group must be with 20 last elements. And the last step is that all groups must be string and not list. how can I do that? I can do that if I know how many elements I have:

s_l = 'AA   AAL   AAOI   ACLS   ADT   ADTX   ADVM   AEL   AIG   ALEC   ALLY   ALT   AMCX   ANGI   APA   APDN   APLS   APPS   APRN   AQUA   ARMK   ARNC   ARVN   ATNM   ATOM   ATRA   ATSG   AVCT   AVT   AX   AXDX   BCLI   BE   BEAM   BJRI   BKE   BKU   BLDR   BLNK   BMRA   BOOT   BXS   BYD   CAKE   CALX   CAPR   CARG   CARR   CARV   CATM   CC   CCL   CELH   CEQP   CFG   CHEF   CHRS   CIT   CLDX   CLR   CLSK   CNK   CNST   CODX   COLB   COOP   CPE   CRS   CTVA   CUK   CVET   CVI   CVM   CYTK   DAL   DBX   DCP   DDS   DEI   DISCA   DISCK   DK   DNB   DRNA   DVAX   DXC   ECOM   EIGR   ELAN   ELF   ELY   ENVA   EQ   EQT   EXEL   FE   FHI   FIXX   FL   FLWS   FMCI   FORM   FOX   FOXA   FRTA   FUN   GBX   GIII   GM   GNMK   GOCO   GPRE   GRAF   GRPN   GRWG   GTHX   GWB   HALO   HCC   HCSG   HEAR   HFC   HGV   HIBB   HMSY   HOG   HOME   HP   HSC   HTH   HWC   IMUX   IMVT   INO   INOV   INSG   INSM   INT   IOVA   IRDM   ITCI   JELD   JWN   KMT   KODK   KPTI   KSS   KTB   KTOS   KURA   LAKE   LB   LCA   LL   LPI   LPRO   LSCC   LYFT   MAXR   MBOT   MCRB   MCS   MD   MDP   MGM   MGNX   MIC   MLHR   MOS   MRSN   MTOR   MXL   MYGN   NCLH   NCR   NK   NKTR   NLS   NMIH   NOVA   NTLA   NTNX   NUAN   NVST   NXTC   ODP   OFC   OKE   OMER   OMF   OMI   ONEM   OSPN   OSUR   OXY   OZK   PACW   PD   PDCE   PDCO   PEAK   PGNY   PLAY   PLCE   PLT   PLUG   PPBI   PRPL   PRTS   PRVB   PS   PSNL   PSTX   PSXP   PTGX   PVAC   RCUS   REAL   REZI   RKT   RMBL   RPAY   RRGB   RRR   RVLV   RVP   RXN   SANM   SAVE   SBGI   SC   SCPL   SEAS   SEM   SFIX   SFM   SGMS   SGRY   SHLL   SHOO   SHYF   SIX   SKX   SLQT   SMCI   SNAP   SNDX   SNV   SONO   SPAQ   SPCE   SPR   SPWH   SPWR   SRG   SRNE   SSNT   SSSS   STOR   SUM   SUN   SUPN   SVMK   SWBI   SYF   SYRS   TBIO   TCDA   TCF   TCRR   TDC   TEX   TFFP   TGTX   THC   TMHC   TRGP   TRIP   TSE   TUP   TVTY   UBX   UCBI   UCTT   UFS   UNFI   UONE   UPWK   URBN   USFD   VCRA   VERI   VIAC   VIRT   VIVO   VREX   VSLR   VSTO   VXRT   WAFD   WBS   WFC   WHD   WIFI   WKHS   WORK   WORX   WRK   WRTC   WW   WWW   WYND   XEC   XENT   XPER   XRX   YELP   ZGNX   ZUMZ   ZYXI'
split_s_l = s_l.split("   ")
part_1 = '  '.join(split_s_l[:100])
part_2 = '  '.join(split_s_l[100:200])
part_3 = '  '.join(split_s_l[200:300])
part_4 = '  '.join(split_s_l[300:])

for part in (part_1, part_2, part_3, part_4):
    print(part)

but I don't know how to do that If I have many elements in list.

bumbum
  • 1
  • So you are saying that you want to support a variable number of elements in the list? – alani Aug 19 '20 at 07:24
  • You mean you want to break up the original string into strings that have 100 words each, with the remaining words in the last string? – Grismar Aug 19 '20 at 07:24
  • @Grismar after slit I will get list['AA', 'AAL', 'AAOI', 'ACLS', 'ADT', 'ADTX', 'ADVM', 'AEL', 'AIG',....] I need to create groups for each group I need 100 elements, and the last group must be, for example, 89 elements because in the list we have 10,089 elements. So expect to get 101 groups, and all groups must be string – bumbum Aug 19 '20 at 07:34

3 Answers3

1

For a variable number of items, you can loop using:

sep = '  '
num = 100

split_s_l = s_l.split(sep)

for i in range(0, len(split_s_l), num):
    part = sep.join(split_s_l[i : i+num])
    print(part)

Bear in mind that for the last slice in the example case ([300:400]) it does not matter that there are only 320 elements -- just the last 20 items will be included (no error).

alani
  • 12,573
  • 2
  • 13
  • 23
1

Something like this?

def break_up(s, nwords, separator):
    words = s.split()
    return [separator.join(words[n:n+nwords]) for n in range(0, len(words), nwords)]


print(break_up('a b c d e f g h', 3, ' '))

Result:

['a b c', 'd e f', 'g h']

Of course, you might call as print(break_up(s_l, 100, ' '))

Grismar
  • 27,561
  • 4
  • 31
  • 54
1

Below

s_l = 'AA   AAL   AAOI   ACLS   ADT   ADTX   ADVM   AEL   AIG   ALEC   ALLY   ALT   AMCX   ANGI   APA   APDN   APLS   APPS   APRN   AQUA   ARMK   ARNC   ARVN   ATNM   ATOM   ATRA   ATSG   AVCT   AVT   AX   AXDX   BCLI   BE   BEAM   BJRI   BKE   BKU   BLDR   BLNK   BMRA   BOOT   BXS   BYD   CAKE   CALX   CAPR   CARG   CARR   CARV   CATM   CC   CCL   CELH   CEQP   CFG   CHEF   CHRS   CIT   CLDX   CLR   CLSK   CNK   CNST   CODX   COLB   COOP   CPE   CRS   CTVA   CUK   CVET   CVI   CVM   CYTK   DAL   DBX   DCP   DDS   DEI   DISCA   DISCK   DK   DNB   DRNA   DVAX   DXC   ECOM   EIGR   ELAN   ELF   ELY   ENVA   EQ   EQT   EXEL   FE   FHI   FIXX   FL   FLWS   FMCI   FORM   FOX   FOXA   FRTA   FUN   GBX   GIII   GM   GNMK   GOCO   GPRE   GRAF   GRPN   GRWG   GTHX   GWB   HALO   HCC   HCSG   HEAR   HFC   HGV   HIBB   HMSY   HOG   HOME   HP   HSC   HTH   HWC   IMUX   IMVT   INO   INOV   INSG   INSM   INT   IOVA   IRDM   ITCI   JELD   JWN   KMT   KODK   KPTI   KSS   KTB   KTOS   KURA   LAKE   LB   LCA   LL   LPI   LPRO   LSCC   LYFT   MAXR   MBOT   MCRB   MCS   MD   MDP   MGM   MGNX   MIC   MLHR   MOS   MRSN   MTOR   MXL   MYGN   NCLH   NCR   NK   NKTR   NLS   NMIH   NOVA   NTLA   NTNX   NUAN   NVST   NXTC   ODP   OFC   OKE   OMER   OMF   OMI   ONEM   OSPN   OSUR   OXY   OZK   PACW   PD   PDCE   PDCO   PEAK   PGNY   PLAY   PLCE   PLT   PLUG   PPBI   PRPL   PRTS   PRVB   PS   PSNL   PSTX   PSXP   PTGX   PVAC   RCUS   REAL   REZI   RKT   RMBL   RPAY   RRGB   RRR   RVLV   RVP   RXN   SANM   SAVE   SBGI   SC   SCPL   SEAS   SEM   SFIX   SFM   SGMS   SGRY   SHLL   SHOO   SHYF   SIX   SKX   SLQT   SMCI   SNAP   SNDX   SNV   SONO   SPAQ   SPCE   SPR   SPWH   SPWR   SRG   SRNE   SSNT   SSSS   STOR   SUM   SUN   SUPN   SVMK   SWBI   SYF   SYRS   TBIO   TCDA   TCF   TCRR   TDC   TEX   TFFP   TGTX   THC   TMHC   TRGP   TRIP   TSE   TUP   TVTY   UBX   UCBI   UCTT   UFS   UNFI   UONE   UPWK   URBN   USFD   VCRA   VERI   VIAC   VIRT   VIVO   VREX   VSLR   VSTO   VXRT   WAFD   WBS   WFC   WHD   WIFI   WKHS   WORK   WORX   WRK   WRTC   WW   WWW   WYND   XEC   XENT   XPER   XRX   YELP   ZGNX   ZUMZ   ZYXI'
words= s_l.split("   ")
num_of_100_groups = int(len(words) / 100)
groups = []
for i in range(0,num_of_100_groups):
    groups.append(words[i * 100 : (i+1) * 100])
groups.append(words[num_of_100_groups * 100:])
for sub_group in groups:
    print(' '.join(sub_group))
balderman
  • 22,927
  • 7
  • 34
  • 52