例如,我有一个6400个数字的字符串,我想将其放入80x80的字符串格式
string1 = '1 2 3 4 5 6 7 8 9'
我想做的是这样:
string2 = '''1 2 3
4 5 6
7 8 9'''
*数字的长度也不同
我尝试使用split(),但是我不知道如何“计算”空格数量并将其放入一个大字符串中
答案 0 :(得分:5)
您可以在空间上分割并遍历整个空间,以制作给定大小的块:
string1 = '1 2 3 4 5 6 7 8 9'
size = 3
splits = string1.split()
print('\n'.join(' '.join(splits[j] for j in range(i, i+size)) for i in range(0, len(splits), size)))
# 1 2 3
# 4 5 6
# 7 8 9
答案 1 :(得分:5)
可变长度数字?只需使用正则表达式即可。
import re
string1 = '1 22 333 4444 55555 666666 77777777 888888888 9999999999'
string2 = '\n'.join(re.findall('((?:\S+ ){2}\S+)', string1))
(?:)
使得您可以重复一个组,但不会在比赛中捕获该组,这使得直接加入成为可能。没有它,您将得到元组。
re.sub
也可以。
string2 = re.sub('((\S+ ){2}\S+) ', lambda m: m.group()+'\n', string1)
您当然会使用{79}
而不是{2}
,它会重复使用'\S+ '
模式(一个或多个非空白字符后跟一个空格),因此您不必必须把它写出来。
答案 2 :(得分:3)
您可以通过按设置的块大小将字符串切片来实现此目的
# Print a new line every 6 characters
# Change this as needed
chunk_size = 6
# The string to split
s = '1 2 3 4 5 6 7 8 9'
# Iterate over a range of numbers 0 to the length of the string
# with a step size of `chunk_size`
# With `chunk_size` as 6, the range will look like
# [0, 6, 12]
for i in range(0, len(s), chunk_size):
# Slice the string from the current index
# to the current index plus the chunk size
# ie: [0:6], [6:12], [12:18]
print(s[i:i+chunk_size])
print()
# To do this with list comprehension
s2 = "\n".join(s[i:i+chunk_size] for i in range(0, len(s), chunk_size))
print(s2)
# Ouptut:
# 1 2 3
# 4 5 6
# 7 8 9
或者,如果您有可变长度的数字,请按照Austin所说的做,然后将相同的概念应用于字符串的拆分版本
chunk_size = 3
s = '10 20 30 4 5 6 7 8 9'.split()
for i in range(0, len(s), chunk_size):
print(" ".join(s[i:i+chunk_size]))
print()
s2 = "\n".join(" ".join(s[i:i+chunk_size]) for i in range(0, len(s), chunk_size))
print(s2)
# Output:
# 10 20 30
# 4 5 6
# 7 8 9