python中字符串格式化输出出错
import re
import random
f=open('StrInts.txt','w')
for i in range(0,500):
f.write(str(random.randint(-9999,9999))+'\t')
f.close()
f1=open('StrInts.txt','r')
data=f1.read()
f1.close()
print(data)
lst=re.findall('-?[0-9]+',data)
print(lst)
flag=int(0)
data_set=[]
for i in lst:
ii=re.findall('\d+',i)
# print(ii)
# print(str(ii[0]))
j=len(str(ii[0]))
# print(j)
num=str(ii[0])[::1]
flag=1
while j>0:
if j%2==0:
if int(num[len(str(ii[0]))-j])%2==0:
flag=0
j-=1
if flag==1:
data_set.append(i)
print(data_set)
with open('ResultInts.txt','w')as f2:
count = 0
for i in data_set:
f.write("{:>8,s}".format(i))
count+=1
if count%3==0:
f.write('\n')
出错代码:
line 36
f.write("{:>8,s}".format(i))
报错信息:
ValueError: Cannot specify ',' with 's'.
import re
import random
f = open('StrInts.txt', 'w')
for i in range(0, 500):
f.write(str(random.randint(-9999, 9999)) + '\t')
f.close()
f1 = open('StrInts.txt', 'r')
data = f1.read()
f1.close()
print(data)
lst = re.findall('-?[0-9]+', data)
print(lst)
flag = 0
data_set = []
for i in lst:
ii = re.findall('\d+', i)
j = len(str(ii[0]))
num = str(ii[0])[::1]
flag = 1
while j > 0:
if j % 2 == 0:
if int(num[len(str(ii[0])) - j]) % 2 == 0:
flag = 0
j -= 1
if flag == 1:
data_set.append(i)
print(data_set)
with open('ResultInts.txt', 'w') as f2:
count = 0
for i in data_set:
f2.write("{:>8s}".format(i))
count += 1
if count % 3 == 0:
f2.write('\n')
报错信息 ValueError: Cannot specify ',' with 's'
是由于在格式化字符串中使用了逗号和字符串格式化符号 's'
不兼容导致的。
根据你的代码,你想要在写入文件时按照每行3个数据进行格式化输出,并使用逗号进行分隔。然而,你在格式化字符串中使用了逗号 ','
,而 's'
是用于字符串格式化的符号,两者不兼容,因此引发了错误。
要解决这个问题,你可以使用以下方法:
with open('ResultInts.txt', 'w') as f2:
count = 0
for i in data_set:
f2.write("{:>8s}".format(i))
count += 1
if count % 3 == 0:
f2.write(', ')
else:
f2.write('\n')
在上述代码中,我们将 f2.write(', ')
改为在每行的末尾添加逗号 ','
。如果不是每行的末尾,就换行输出。
这样修改后的代码应该可以解决你的问题,并按照每行3个数据进行格式化输出,并使用逗号进行分隔。请注意,在写入文件时要注意格式化字符串和符号的兼容性,确保使用正确的格式化符号。
invalid literal for int() with base 10: 变量值 : 变量值无效
too many values to unpack (expected 2) : 要解包的值太多,应该为 2
not enough values to unpack (expected 2, got 1) :值不足,无法解包,应该为 2 ,实际只给了 1