Hướng dẫn how do you multiply letters by numbers in python? - làm cách nào để nhân các chữ cái với số trong python?

Ví dụ, tiêu đề tôi muốn biến 'a3g3a' thành 'aaaggga'. Tôi có cái này cho đến nay:

if any(i.isdigit() for i in string):
    for i in range(0, len(string)):
        if string[i].isdigit():
             (i am lost after this)

Hướng dẫn how do you multiply letters by numbers in python? - làm cách nào để nhân các chữ cái với số trong python?

Anuj

1.00411 Huy hiệu bạc21 Huy hiệu đồng11 silver badges21 bronze badges

Đã hỏi ngày 12 tháng 11 năm 2017 lúc 7:54Nov 12, 2017 at 7:54

Đây là một cách tiếp cận đơn giản:

string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)

Đầu ra: Aaaggga

Nó giả định đầu vào hợp lệ. Hạn chế là yếu tố lặp lại phải là một chữ số duy nhất, ví dụ: 2 - 9. Nếu chúng ta muốn các yếu tố lặp đi lặp lại lớn hơn 9, chúng ta phải thực hiện phân tích nhiều hơn một chút về chuỗi:

from itertools import groupby

groups = groupby('DA10G3ABC', str.isdigit)

expanded = []

for is_numeric, characters in groups:

    if is_numeric:
        expanded.append(expanded[-1] * (int(''.join(characters)) - 1))
    else:
        expanded.extend(characters)

print(''.join(expanded))

Đầu ra: daaaaaaaaaagggabc

Đã trả lời ngày 12 tháng 11 năm 2017 lúc 8:32Nov 12, 2017 at 8:32

Hướng dẫn how do you multiply letters by numbers in python? - làm cách nào để nhân các chữ cái với số trong python?

CDlanecdlanecdlane

38.6K5 Huy hiệu vàng27 Huy hiệu bạc75 Huy hiệu đồng5 gold badges27 silver badges75 bronze badges

6

Giả sử rằng định dạng luôn là một chữ cái theo sau bởi một số nguyên, với số nguyên cuối cùng có thể bị thiếu:

>>> from itertools import izip_longest
>>> s = 'A3G3A'
>>> ''.join(c*int(i) for c, i in izip_longest(*[iter(s)]*2, fillvalue=1))
'AAAGGGA'

Giả sử rằng định dạng có thể là bất kỳ chuỗi con nào theo sau là số nguyên, với số nguyên có thể dài hơn một chữ số và số nguyên cuối cùng có thể bị thiếu:

>>> from itertools import izip_longest
>>> import re
>>> s = 'AB10GY3ABC'
>>> sp = re.split('(\d+)', s)
>>> ''.join(c*int(i) for c, i in izip_longest(*[iter(sp)]*2, fillvalue=1))
'ABABABABABABABABABABGYGYGYABC'

Đã trả lời ngày 12 tháng 11 năm 2017 lúc 8:57Nov 12, 2017 at 8:57

Hướng dẫn how do you multiply letters by numbers in python? - làm cách nào để nhân các chữ cái với số trong python?

Timgebtimgebtimgeb

74,9K20 Huy hiệu vàng116 Huy hiệu bạc141 Huy hiệu Đồng20 gold badges116 silver badges141 bronze badges

Một mã python thuần túy tối thiểu quản lý tất cả các trường hợp.

output = ''
n = ''
c = ''
for x in input + 'a':
    if x.isdigit():
        n += x
    else:
        if n == '': 
            n = '1'
        output = output + c*int(n)
        n = ''
        c = x

với

string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
2,
string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
3 là
string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
4.
string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
5 là để thực thi hành vi tốt ở cuối, bởi vì đầu ra bị trì hoãn.

Đã trả lời ngày 12 tháng 11 năm 2017 lúc 10:33Nov 12, 2017 at 10:33

Hướng dẫn how do you multiply letters by numbers in python? - làm cách nào để nhân các chữ cái với số trong python?

B. M.B. M.B. M.

17.8K2 Huy hiệu vàng32 Huy hiệu bạc53 Huy hiệu đồng2 gold badges32 silver badges53 bronze badges

2

Một cách tiếp cận khác có thể là -

import re
input_string = 'A3G3A'
alphabets = re.findall('[A-Z]', input_string) # List of all alphabets - ['A', 'G', 'A']
digits = re.findall('[0-9]+', input_string) # List of all numbers - ['3', '3']
final_output = "".join([alphabets[i]*int(digits[i]) for i in range(0, len(alphabets)-1)]) + alphabets[-1] 
#  This expression repeats each letter by the number next to it ( Except for the last letter ), joins the list of strings into a single string, and appends the last character
#  final_output - 'AAAGGGA'

Giải trình -

In [31]: alphabets # List of alphabets in the string
Out[31]: ['A', 'G', 'A']

In [32]: digits  # List of numbers in the string ( Including numbers more than one digit)
Out[32]: ['3', '3']

In [33]: list_of_strings = [alphabets[i]*int(digits[i]) for i in range(0, len(alphabets)-1)]  # List of strings after repetition

In [34]: list_of_strings
Out[34]: ['AAA', 'GGG']

In [35]: joined_string = "".join(list_of_strings) # Joined list of strings

In [36]: joined_string
Out[36]: 'AAAGGG'

In [38]: final_output = joined_string + input_string[-1] # Append last character of the string

In [39]: final_output
Out[39]: 'AAAGGGA'

Đã trả lời ngày 12 tháng 11 năm 2017 lúc 10:17Nov 12, 2017 at 10:17

GaneshtataganeshtataGaneshTata

1.0728 huy hiệu bạc24 Huy hiệu đồng8 silver badges24 bronze badges

Sử dụng * để lặp lại các ký tự:

Phạm vi lặp giả định giữa [1,9]

q = 'A3G3A'
try:
    int(q[-1]) # check if it ends with digit
except:
    q = q+'1' # repeat only once
"".join([list(q)[i]*int(list(q)[i+1]) for i in range(0,len(q),2)])

Đã trả lời ngày 20 tháng 11 năm 2017 lúc 1:49Nov 20, 2017 at 1:49

yosemite_kyosemite_kyosemite_k

3.0341 Huy hiệu vàng16 Huy hiệu bạc26 Huy hiệu đồng1 gold badge16 silver badges26 bronze badges

Một giải pháp một dòng. Giả sử số trong phạm vi [0, 9].

>>> s = 'A3G3A'
>>> s = ''.join(s[i] if not s[i].isdigit() else s[i-1]*(int(s[i])-1) for i in range(0, len(s)))
>>> print(s)
AAAGGGA

Đã trả lời ngày 17 tháng 10 năm 2019 lúc 19:24Oct 17, 2019 at 19:24

Hướng dẫn how do you multiply letters by numbers in python? - làm cách nào để nhân các chữ cái với số trong python?

Ôm Regex! Điều này tìm thấy tất cả các lần xuất hiện của mẫu

string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
6 và thay thế cho chuỗi con đó bằng nhiều nhân vật.

string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
0

Đã trả lời ngày 20 tháng 7 lúc 16:02Jul 20 at 16:02

Điều này có thể được giải quyết bằng Numpy:

string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
1

Đã trả lời ngày 19 tháng 9 lúc 17:16Sep 19 at 17:16

Hướng dẫn how do you multiply letters by numbers in python? - làm cách nào để nhân các chữ cái với số trong python?

HamzahhamzahHamzah

4.2022 Huy hiệu vàng8 Huy hiệu bạc36 Huy hiệu đồng2 gold badges8 silver badges36 bronze badges

Làm thế nào để bạn nhân các chữ cái trong Python?

Phương pháp 1: Chỉ cần sử dụng toán tử nhân trên chuỗi để được sao chép với số lần cần thiết. N là số lần bạn muốn sao chép chuỗi.using multiplication operator on the string to be copied with the required number of times it should be copied. N is the number of the times you want to copy the string.

Làm thế nào để bạn nhân một chuỗi với một số?

Để (đúng) nhân một chuỗi với một số nguyên, bạn chia chuỗi thành các ký tự, lặp lại từng ký tự một số lần bằng số nguyên và sau đó dán lại các ký tự lại với nhau.Nếu số nguyên là âm, chúng tôi sử dụng giá trị tuyệt đối của nó trong bước đầu tiên và sau đó đảo ngược chuỗi.split the string into characters, repeat each character a number of times equal to the integer, and then stick the characters back together. If the integer is negative, we use its absolute value in the first step, and then reverse the string.

Bạn có thể nhân một chuỗi và số nguyên trong Python không?

Khi bạn nhân một chuỗi với một số nguyên, Python sẽ trả về một chuỗi mới.Chuỗi mới này là chuỗi ban đầu, số lần lặp lại x lần (trong đó x là giá trị của số nguyên).. This new string is the original string, repeated X number of times (where X is the value of the integer).

Làm thế nào để bạn nhân nhiều giá trị trong Python?

Chúng ta có thể sử dụng numpy.prod () từ nhập khẩu numpy để có được sự nhân của tất cả các số trong danh sách.Nó trả về một số nguyên hoặc giá trị float tùy thuộc vào kết quả nhân.use numpy. prod() from import numpy to get the multiplication of all the numbers in the list. It returns an integer or a float value depending on the multiplication result.