【问题标题】:Separating strings based on user-input python基于用户输入python分离字符串
【发布时间】:2021-12-26 15:13:23
【问题描述】:

我今天早些时候posted this 得到了答案,但我想尝试其他方法,以防我可能对我的脚本进行任何更改,所以如果有解决方案,我将不胜感激。

您可以通过this link查看我的另一个问题的原始代码,但这里是一个快速浏览,它不会涵盖整个事情,但它是:

import re
string = "RV49CJ0AUTS172Y"

length = int(len(string) / 3)
separated = "-".join(re.findall('.{%d}' % length, string))

print(separated)

所以我有这个:

2 = 14
3 = 12-15-18-21
4 = 12-16
5 = 10-5

这是我需要的分隔部分,左边的数字是我希望字符串也被分隔的部分的数量,右边的数字是用户可以输入并基于的长度用户输入的字符串应根据数字返回的位置进行分隔。 例如,如果用户选择 18 作为长度,那么字符串应该被分成 3 部分,如果用户选择 16,那么字符串将被分成 4 部分,以此类推。

Char_18 = AS0MN5R1V85HN10OLA
separated = AS0MN5-R1V85H-N10OLA

Char_16 = NAH9186GMZLO1P09
separated = NAH9-186G-MZLO-1P09

那么如何将它应用到我的脚本中呢? 任何帮助都会很棒!

【问题讨论】:

  • 请说明你想要什么。你提到“分离部分”,没有定义这个部分?另外,不要参考之前的代码问题,您需要提供一个带有Short, Self Contained, Correct (Compilable), Example 的独立问题。
  • 好的,所以如果用户输入长度为 18,则字符串将被分成 3 个部分,以此类推,其他数字因此基本上无论用户输入什么长度,它都会被分成该长度的部分数如果用户选择长度 16,则存储在其中,如果选择长度为 16,则字符串将分为 4 个不同的部分,如果选择了 18 个长度,则字符串将分为 3 个不同的部分
  • 为什么字符串会分成三部分?如果用户输入长度为 14 会发生什么?
  • 哦,代码不用担心,我只添加了基本部分,上一篇文章中有一些无关紧要的东西,所以不用担心,因为这是一个后续问题但它与前一个无关,但您可以说具有相同的概念,但采用另一种代码结构。
  • 比它分成两部分

标签: python string input split user-input


【解决方案1】:

如果将来有人想要,我找到了答案,所以这里是:

import re
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
numbers = "0123456789"
all = chars + numbers
while True:
    length = int(input("Select the length you want for your key: "))
    if 5 <= length <= 21:
        break
length_1 = 0
div_2 = 14
div_3 = 12,15,18,21
div_4 = 16,20
div_5 = 10,5
if length % div_2 == 0:
    length_1 = 2
elif any(length % i == 0 for i in div_3):        
    length_1 = 3
elif any(length % i == 0 for i in div_4):
    length_1 = 4
elif any(length % i == 0 for i in div_5):
    length_1 = 5
key = "".join(random.sample(all, length))
length_2 = int(len(key) / length_1)
separated = "-".join(re.findall('.{%d}' % length_2, key)

这是我的代码的一部分,我无法发布直接答案,因为如果有人尝试使用它,他们会很困惑,但可以回答您问题的主要部分是:

while True:
    length = int(input("Select the length you want for your key: "))
    if 5 <= length <= 21:
        break
length_1 = 0
div_2 = 14
div_3 = 12,15,18,21
div_4 = 16,20
div_5 = 10,5
if length % div_2 == 0:
    length_1 = 2
elif any(length % i == 0 for i in div_3):        
    length_1 = 3
elif any(length % i == 0 for i in div_4):
    length_1 = 4
elif any(length % i == 0 for i in div_5):
    length_1 = 5

还有这个:

length_2 = int(len(key) / length_1)
separated = "-".join(re.findall('.{%d}' % length_2, key)

我希望这对有相同问题的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    相关资源
    最近更新 更多