【问题标题】:Split string at a certain point in python [duplicate]在python中的某个点拆分字符串[重复]
【发布时间】:2020-04-20 01:37:37
【问题描述】:

我正在尝试使用 python 在某个点拆分字符串

我想做的如下:

假设我们有一个字符串

str = "123456789123456789"

我想将此字符串分解为每个部分的长度为5 或更短的部分(最后一部分)

所以上面字符串的输出应该是这样的:


    l: 12345
    r: 67891
    l: 23456
    r: 789

这是我正在尝试执行的代码:


            errormsg = "123456789123456789"
            if len(errormsg) > 5 :
                print("yes")
                splitat = 5
                str = errormsg
                l, r = str[:splitat], str[splitat:]
                print("l: " + l)
                print("r: " + r)

                while len(r) > 5:
                    # print("hi")                
                    str = r
                    splitat = 5
                    l, r = str[:splitat], str[splitat:]
                    print("l: " + l)
                    print("r: " + r)


但它给出了一个像这样的奇怪输出:


yes
l: 12345
r: 6789123456789
l: 67891
r: 23456789
l: 23456
r: 789

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 你没有说你想要的输出是什么?所以很难说如何解决它。您得到的输出是因为您在拆分后继续打印 l 和 r 值,但您从不存储这些
  • 这能回答你的问题吗? Split string every nth character?
  • 原因是你给r的切片没有结束位置,所以它包含了字符串的其余部分
  • errormsg = "123456789123456789" 如果 len(errormsg) > 5 : print("yes") splitat = 5 str = errormsg l, r = str[:splitat], str[splitat:splitat*2 ] print("l:" + l) print("r:" + r) while len(str) > 5: # print("hi") splitat = 5 l, r = str[:splitat], str[splitat :splitat*2] str = str[splitat*2:splitat*3] print("l:" + l) print("r:" + r)

标签: python


【解决方案1】:

我只是使用 itertools 模块中的配方:

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

【讨论】:

  • izip?这是对今晚结束的 Python 2 的悼词吗?
  • zip 如果您想跨入新的十年 =D
【解决方案2】:

试试:

str = "123456789123456789"
splitted_string = []

for i in range(0, len(str), 5):
    splitted_string.append(str[i:i+5])

print(splitted_string)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2013-10-18
    • 2012-03-31
    • 2015-05-12
    • 2011-06-27
    • 2013-05-05
    相关资源
    最近更新 更多