将循环输出整数作为字符串加入?
Joining loop output integers as a string?
到目前为止,这是我的代码。它将数字作为字符串,并在需要时将它们拆分。然后将它们从八进制转换为十进制。
但是,在多个数字作为单个字符串出现的情况下;转换后,我需要将它们重新组合成一个字符串。他们到达的格式相同。
dataset = "120 156 206" #Just a testing sample
delimiter = " "
if delimiter in dataset:
text = dataset.strip('"')
text = text.split()
for i in text:
c = int(i, base=8)
var1 = "".join(str(c))
print(var1)
else:
c = int(dataset, base=8)
print(c)
预期输出应为:"80 110 134"
我试过:
d = " ".join(str(c))
输出:
8 0
1 1 0
1 3 4
d += " ".join(str(c))
输出:
1 3 48 0
1 3 48 01 1 0
1 3 48 01 1 01 3 4
还有各种其他似乎只会破坏一切的东西,类型错误等...
没有 .join
这是我到目前为止最接近的:
80
110
134
我会理解的。在空白处拆分数据,将元素转换为 int
和 base=8
,将其转换回字符串,然后连接结果。您不需要检查分隔符,split()
会为您做这件事(如果没有分隔符,returns 一个只有一个元素的列表,所以您不需要关心它) .
" ".join(str(int(i, base=8)) for i in dataset.split())
这段代码给出了您需要的输出:
dataset = "120 156 206" #Just a testing sample
delimiter = " "
if delimiter in dataset:
text = dataset.strip('"')
text = text.split(delimiter)
c = []
for i in text:
c.append(str(int(i, base=8)))
var1 = " ".join(c)
print(var1)
else:
c = int(dataset, base=8)
print(c)
问题是 print
以换行符结尾,这是您不想要的
要么改end
。请注意,您没有 "".join(str(c))
,只需使用 c
for i in text:
c = int(i, base=8)
print(c, end=" ")
或者循环保存,一次性打印出来
result = []
for i in text:
result.append(str(int(i, base=8)))
print(" ".join(result))
请注意,您既不需要 strip
也不需要 if/else
,并且可以将所有这些组合在一个列表理解中
dataset = "120"
result = [str(int(i, base=8)) for i in dataset.split()]
print(" ".join(result))
您不必关心是否使用定界符。 Python 会处理的。
考虑到这一点,哪里有一种冗长的方法可以做到这一点,即使您使用一个数字也可以。记下 singular/plural 个变量名称来指导您:
dataset = "120 156 206" #Just a testing sample
delimiter = " "
numbers_as_octal_string = dataset.split(delimiter)
numbers_as_decimal_string = []
for number_as_octal_string in numbers_as_octal_string:
number_as_decimal = int(number_as_octal_string, 8)
number_as_decimal_string = str(number_as_decimal)
numbers_as_decimal_string.append(number_as_decimal_string)
print(delimiter.join(numbers_as_decimal_string))
这样做之后,Python 中有一个叫做 list comprehensions 的技巧,它们可以通过在一行中完成大量工作来使您的工作变得更加轻松。这也是“Pythonic”做事的方式(尽管我实际上会再创建至少一两个变量)。
dataset = "120 156 206" #Just a testing sample
delimiter = " "
print(delimiter.join([str(int(number_as_octal_string)) for number_as_octal_string in dataset.split(delimiter)]))
假设你只需要打印结果而不是保存它作为一个变量,你不需要join
, 转换为 str
或检查分隔符。使用 print
函数的 sep
参数的默认值(即 space),您可以在一行简单的代码中完成所有操作:
print(*(int(oct, 8) for oct in dataset.split()))
这会解压将每个 space-separated 元素从字符串转换为八进制整数的结果。然后元素默认由 space 分隔(如上所述)并且 print
负责为您转换为字符串。
你们 none 人在星期天下午有更好的事情要做吗?
我开始写这篇文章时有 3 个回复,现在有 7 个。
我不确定是否可以勾选多个作为答案。他们都工作。这是Python最难的地方,做同一件事似乎有很多种方法。对于不是neuro-typical并且很容易开始想太多的人来说,我很快就瘫痪了。
@Tomerikoo - 我确实需要输出一个变量。到目前为止,我一直将它保留为打印件,以便我可以看到结果输出。它将形成一个函数。
这一次,我采用了@azro的解决方案。尽管如果可能的话,我也会尝试勾选其他人。不确定它是否允许我这样做。
最后,我把你所有的答案都抄到我的笔记本里了。因此,当我可怕的糟糕记忆力在未来让我失望时。你会再次帮助我的。
到目前为止,这是我的代码。它将数字作为字符串,并在需要时将它们拆分。然后将它们从八进制转换为十进制。 但是,在多个数字作为单个字符串出现的情况下;转换后,我需要将它们重新组合成一个字符串。他们到达的格式相同。
dataset = "120 156 206" #Just a testing sample
delimiter = " "
if delimiter in dataset:
text = dataset.strip('"')
text = text.split()
for i in text:
c = int(i, base=8)
var1 = "".join(str(c))
print(var1)
else:
c = int(dataset, base=8)
print(c)
预期输出应为:"80 110 134"
我试过:
d = " ".join(str(c))
输出:
8 0
1 1 0
1 3 4
d += " ".join(str(c))
输出:
1 3 48 0
1 3 48 01 1 0
1 3 48 01 1 01 3 4
还有各种其他似乎只会破坏一切的东西,类型错误等...
没有 .join
这是我到目前为止最接近的:
80
110
134
我会理解的。在空白处拆分数据,将元素转换为 int
和 base=8
,将其转换回字符串,然后连接结果。您不需要检查分隔符,split()
会为您做这件事(如果没有分隔符,returns 一个只有一个元素的列表,所以您不需要关心它) .
" ".join(str(int(i, base=8)) for i in dataset.split())
这段代码给出了您需要的输出:
dataset = "120 156 206" #Just a testing sample
delimiter = " "
if delimiter in dataset:
text = dataset.strip('"')
text = text.split(delimiter)
c = []
for i in text:
c.append(str(int(i, base=8)))
var1 = " ".join(c)
print(var1)
else:
c = int(dataset, base=8)
print(c)
问题是 print
以换行符结尾,这是您不想要的
要么改
end
。请注意,您没有"".join(str(c))
,只需使用c
for i in text: c = int(i, base=8) print(c, end=" ")
或者循环保存,一次性打印出来
result = [] for i in text: result.append(str(int(i, base=8))) print(" ".join(result))
请注意,您既不需要 strip
也不需要 if/else
,并且可以将所有这些组合在一个列表理解中
dataset = "120"
result = [str(int(i, base=8)) for i in dataset.split()]
print(" ".join(result))
您不必关心是否使用定界符。 Python 会处理的。
考虑到这一点,哪里有一种冗长的方法可以做到这一点,即使您使用一个数字也可以。记下 singular/plural 个变量名称来指导您:
dataset = "120 156 206" #Just a testing sample
delimiter = " "
numbers_as_octal_string = dataset.split(delimiter)
numbers_as_decimal_string = []
for number_as_octal_string in numbers_as_octal_string:
number_as_decimal = int(number_as_octal_string, 8)
number_as_decimal_string = str(number_as_decimal)
numbers_as_decimal_string.append(number_as_decimal_string)
print(delimiter.join(numbers_as_decimal_string))
这样做之后,Python 中有一个叫做 list comprehensions 的技巧,它们可以通过在一行中完成大量工作来使您的工作变得更加轻松。这也是“Pythonic”做事的方式(尽管我实际上会再创建至少一两个变量)。
dataset = "120 156 206" #Just a testing sample
delimiter = " "
print(delimiter.join([str(int(number_as_octal_string)) for number_as_octal_string in dataset.split(delimiter)]))
假设你只需要打印结果而不是保存它作为一个变量,你不需要join
, 转换为 str
或检查分隔符。使用 print
函数的 sep
参数的默认值(即 space),您可以在一行简单的代码中完成所有操作:
print(*(int(oct, 8) for oct in dataset.split()))
这会解压将每个 space-separated 元素从字符串转换为八进制整数的结果。然后元素默认由 space 分隔(如上所述)并且 print
负责为您转换为字符串。
你们 none 人在星期天下午有更好的事情要做吗?
我开始写这篇文章时有 3 个回复,现在有 7 个。
我不确定是否可以勾选多个作为答案。他们都工作。这是Python最难的地方,做同一件事似乎有很多种方法。对于不是neuro-typical并且很容易开始想太多的人来说,我很快就瘫痪了。
@Tomerikoo - 我确实需要输出一个变量。到目前为止,我一直将它保留为打印件,以便我可以看到结果输出。它将形成一个函数。
这一次,我采用了@azro的解决方案。尽管如果可能的话,我也会尝试勾选其他人。不确定它是否允许我这样做。
最后,我把你所有的答案都抄到我的笔记本里了。因此,当我可怕的糟糕记忆力在未来让我失望时。你会再次帮助我的。