This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: python 2.7.13 join issue
Type: behavior Stage: resolved
Components: macOS Versions: Python 2.7
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: ezio.melotti, ned.deily, ronaldoussoren, 方文添
Priority: normal Keywords:

Created on 2017-05-08 10:52 by 方文添, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (2)
msg293231 - (view) Author: 方文添 (方文添) Date: 2017-05-08 10:52
when i use str join , i find some issue,
such as 
str_msg = 'malluin=MTg5Njk2ODIyMA==; Path=/bizmall/; HttpOnly, mallkey=9a9b172e5cac49c6b1ef970f4405c5e91712468846bb23c477c852d4987703b074ce9a48b440d92ec7dd1012275c926a41a8e76cd5a0e4b17efa705ab2d42fc85192b6542b218d2ecefc88f0f7cd7c68; Path=/bizmall/; HttpOnly, malluin=EXPIRED; Path=/; Expires=Sun, 07-May-2017 09:49:24 GMT; HttpOnly, mallkey=EXPIRED; Path=/; Expires=Sun, 07-May-2017 09:49:24 GMT; HttpOnly, payforreadsn=EXPIRED; Path=/; Expires=Sun, 07-May-2017 09:49:24 GMT; HttpOnly, wxtokenkey=b7945ae2cd97e8e5d3029cd7b90a893f68ace0b498b100ff63d61d8bb2a0259c; Path=/; HttpOnly, wxticket=3510401828; Path=/; HttpOnly, wxticketkey=72a9df89b5c9460ea7507b21f5c6938068ace0b498b100ff63d61d8bb2a0259c; Path=/; HttpOnly, wap_sid=CJzgxYgHEkBVSXBfZVJUdktUVi1QV0RrSVNTR08wV3poTjE4UEpyVHU1b2JmMFZCaEhqVGVjTHJQRTVzaENzLXhWUnV2cGlFGAQg/BEo7rzXnwswpP7AyAU=; Path=/; HttpOnly, wap_sid2=CJzgxYgHEnBTM045bVNlZ0xOQmROSVNydEV4UExZZFhma1BpZVI2UVlybXc1WFlpa2NZbXRLLVpnTnl6UldVeGQxSnotbDgtR2tkVTFEek96U3ExU2VWYzQ1cTRiVmc3R0JBZWlMUEU3S1NScG9KTmhubUhBd0FBMKT+wMgF; Path=/; HttpOnly, pass_ticket=0JAIZfxQAFgv68rxGl33/gZEtmgCTyHk3Jd2pSWZOnQg0u5FKjc3BdNJABTOAyQ+; Path=/; HttpOnly'.replace(
    'HttpOnly', '').replace(',', '').replace(' ', '')
items = str_msg.split(';')
new_item = ''
for item in items:
    if 'wxtokenkey' in item:
        new_item = new_item.join((item + ';'))
    if 'wxticketkey' in item:
        new_item = new_item.join((item + ';'))
    if 'wap_sid=' in item:
        new_item = new_item.join((item + ';'))
    if 'wap_sid2' in item:
        new_item = new_item.join((item + ';'))
    if 'pass_ticket' in item:
        new_item = new_item.join((item + ';'))
print new_item

it would no stop !!!

and such as 
str_msg = 'malluin=MTg5Njk2ODIyMA==; Path=/bizmall/; HttpOnly, mallkey=9a9b172e5cac49c6b1ef970f4405c5e91712468846bb23c477c852d4987703b074ce9a48b440d92ec7dd1012275c926a41a8e76cd5a0e4b17efa705ab2d42fc85192b6542b218d2ecefc88f0f7cd7c68; Path=/bizmall/; HttpOnly, malluin=EXPIRED; Path=/; Expires=Sun, 07-May-2017 09:49:24 GMT; HttpOnly, mallkey=EXPIRED; Path=/; Expires=Sun, 07-May-2017 09:49:24 GMT; HttpOnly, payforreadsn=EXPIRED; Path=/; Expires=Sun, 07-May-2017 09:49:24 GMT; HttpOnly, wxtokenkey=b7945ae2cd97e8e5d3029cd7b90a893f68ace0b498b100ff63d61d8bb2a0259c; Path=/; HttpOnly, wxticket=3510401828; Path=/; HttpOnly, wxticketkey=72a9df89b5c9460ea7507b21f5c6938068ace0b498b100ff63d61d8bb2a0259c; Path=/; HttpOnly, wap_sid=CJzgxYgHEkBVSXBfZVJUdktUVi1QV0RrSVNTR08wV3poTjE4UEpyVHU1b2JmMFZCaEhqVGVjTHJQRTVzaENzLXhWUnV2cGlFGAQg/BEo7rzXnwswpP7AyAU=; Path=/; HttpOnly, wap_sid2=CJzgxYgHEnBTM045bVNlZ0xOQmROSVNydEV4UExZZFhma1BpZVI2UVlybXc1WFlpa2NZbXRLLVpnTnl6UldVeGQxSnotbDgtR2tkVTFEek96U3ExU2VWYzQ1cTRiVmc3R0JBZWlMUEU3S1NScG9KTmhubUhBd0FBMKT+wMgF; Path=/; HttpOnly, pass_ticket=0JAIZfxQAFgv68rxGl33/gZEtmgCTyHk3Jd2pSWZOnQg0u5FKjc3BdNJABTOAyQ+; Path=/; HttpOnly'.replace(
    'HttpOnly', '').replace(',', '').replace(' ', '')
items = str_msg.split(';')
new_item = ''
for item in items:
    if 'wxtokenkey' in item:
        # new_item = new_item.join((item + ';'))
        new_item = new_item.join([item, ';'])
    if 'wxticketkey' in item:
        new_item = new_item.join([item, ';'])
    if 'wap_sid=' in item:
        new_item = new_item.join([item, ';'])
    if 'wap_sid2' in item:
        new_item = new_item.join([item, ';'])
    if 'pass_ticket' in item:
        new_item = new_item.join([item, ';'])
print new_item

it would be have a str 
and this str is pass_ticket=0JAIZfxQAFgv68rxGl33/gZEtmgCTyHk3Jd2pSWZOnQg0u5FKjc3BdNJABTOAyQ+wap_sid2=CJzgxYgHEnBTM045bVNlZ0xOQmROSVNydEV4UExZZFhma1BpZVI2UVlybXc1WFlpa2NZbXRLLVpnTnl6UldVeGQxSnotbDgtR2tkVTFEek96U3ExU2VWYzQ1cTRiVmc3R0JBZWlMUEU3S1NScG9KTmhubUhBd0FBMKT+wMgFwap_sid=CJzgxYgHEkBVSXBfZVJUdktUVi1QV0RrSVNTR08wV3poTjE4UEpyVHU1b2JmMFZCaEhqVGVjTHJQRTVzaENzLXhWUnV2cGlFGAQg/BEo7rzXnwswpP7AyAU=wxticketkey=72a9df89b5c9460ea7507b21f5c6938068ace0b498b100ff63d61d8bb2a0259cwxtokenkey=b7945ae2cd97e8e5d3029cd7b90a893f68ace0b498b100ff63d61d8bb2a0259c;;;;;

but i think it should be 

wxtokenkey=b7945ae2cd97e8e5d3029cd7b90a893f68ace0b498b100ff63d61d8bb2a0259c;wxticketkey=72a9df89b5c9460ea7507b21f5c6938068ace0b498b100ff63d61d8bb2a0259c;wap_sid=CJzgxYgHEkBVSXBfZVJUdktUVi1QV0RrSVNTR08wV3poTjE4UEpyVHU1b2JmMFZCaEhqVGVjTHJQRTVzaENzLXhWUnV2cGlFGAQg/BEo7rzXnwswpP7AyAU=;wap_sid2=CJzgxYgHEnBTM045bVNlZ0xOQmROSVNydEV4UExZZFhma1BpZVI2UVlybXc1WFlpa2NZbXRLLVpnTnl6UldVeGQxSnotbDgtR2tkVTFEek96U3ExU2VWYzQ1cTRiVmc3R0JBZWlMUEU3S1NScG9KTmhubUhBd0FBMKT+wMgF;pass_ticket=0JAIZfxQAFgv68rxGl33/gZEtmgCTyHk3Jd2pSWZOnQg0u5FKjc3BdNJABTOAyQ+;
msg293232 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2017-05-08 11:11
I think you are misunderstanding how join works.
join is useful when you have a list of strings, and you want to combine them together, possibly specifying a separator.  The syntax is separator.join(list_of_strings), for example:
>>> '-'.join(['foo', 'bar', 'baz'])
'foo-bar-baz'

What you are doing is: new_item = new_item.join((item + ';'))
Here new_item is the separator, and (item + ';') is a string (a sequence of characters), so the separator is added between each character of the string:
>>> '-'.join('foobarbaz')
'f-o-o-b-a-r-b-a-z'

new_item will grow bigger and bigger, and since you keep adding it between each character of the item, Python will soon run out of memory:
>>> 'newitem'.join('foobarbaz')
'fnewitemonewitemonewitembnewitemanewitemrnewitembnewitemanewitemz'

You probably want to add the items to a new list, and after the for loop you just need to do '; '.join(new_list_of_items), or, if you want a ; at the end, you can add (item + ';') to the list and then use ' '.join(new_list_of_items).

I also suggest you to use the interactive interpreter to experiment with join.
History
Date User Action Args
2022-04-11 14:58:46adminsetgithub: 74491
2017-05-08 11:11:16ezio.melottisetstatus: open -> closed

nosy: + ezio.melotti
messages: + msg293232

resolution: not a bug
stage: resolved
2017-05-08 10:52:56方文添create