8

What I want to achieve is simple, in R I can do things like

paste0("https\\",1:10,"whatever",11:20),

how to do such in Python? I found some things here, but only allow for :

paste0("https\\",1:10).

Anyone know how to figure this out, this must be easy to do but I can not find how.

micstr
  • 5,080
  • 8
  • 48
  • 76
Jia Gao
  • 1,172
  • 3
  • 13
  • 26

2 Answers2

4

@Jason, I will suggest you to use any of these following 2 ways to do this task.

✓ By creating a list of texts using list comprehension and zip() function.

Note: To print \ on screen, use escape sequence \\. See List of escape sequences and their use.

Please comment if you think this answer doesn't satisfy your problem. I will change the answer based on your inputs and expected outputs.

texts = ["https\\\\" + str(num1) + "whatever" + str(num2) for num1, num2 in zip(range(1,10),range(11, 20))]

for text in texts:
    print(text)

"""
https\\1whatever11
https\\2whatever12
https\\3whatever13
https\\4whatever14
https\\5whatever15
https\\6whatever16
https\\7whatever17
https\\8whatever18
https\\9whatever19
"""

✓ By defining a simple function paste0() that implements the above logic to return a list of texts.

import json

def paste0(string1, range1, strring2, range2):
    texts = [string1 + str(num1) + string2 + str(num2) for num1, num2 in zip(range1, range2)]

    return texts


texts = paste0("https\\\\", range(1, 10), "whatever", range(11, 20))

# Pretty printing the obtained list of texts using Jon module
print(json.dumps(texts, indent=4))

"""
[
    "https\\\\1whatever11",
    "https\\\\2whatever12",
    "https\\\\3whatever13",
    "https\\\\4whatever14",
    "https\\\\5whatever15",
    "https\\\\6whatever16",
    "https\\\\7whatever17",
    "https\\\\8whatever18",
    "https\\\\9whatever19"
]
"""
hygull
  • 8,464
  • 2
  • 43
  • 52
1

Based on the link you provided, this should work:

["https://" + str(i) + "whatever" + str(i) for i in xrange(1,11)]

Gives the following output:

['https://1whatever1', 'https://2whatever2', 'https://3whatever3', 
'https://4whatever4', 'https://5whatever5', 'https://6whatever6', 
'https://7whatever7', 'https://8whatever8',
'https://9whatever9', 'https://10whatever10']

EDIT:

This should work for paste0("https\\",1:10,"whatever",11:20)

paste_list = []

for i in xrange(1,11):

    # replace {0} with the value of i
    first_half = "https://{0}".format(i)

    for x in xrange(1,21):

        # replace {0} with the value of x
        second_half = "whatever{0}".format(x)

        # Concatenate the two halves of the string and append them to paste_list[]
        paste_list.append(first_half+second_half)

print paste_list
rst-2cv
  • 1,130
  • 1
  • 15
  • 31
  • Hi @ResetACK, thanks for your response, this does works. Sorry I did not make the question clear enough, what if it changes to `paste0("https\\",1:10,"whatever",11:20)`? BYW, edited in the question too. – Jia Gao Jun 02 '18 at 03:33
  • @JasonGoal edited new answer, let me know how you go – rst-2cv Jun 02 '18 at 03:44
  • @ResetACKm, your solution works very well for me. Rishikesh Agrawani's answer is easier to implement, especially the first one, so I'll attribute the credit to him. thanks for the solution anyway. – Jia Gao Jun 03 '18 at 01:19