ChatGPT解决这个技术问题 Extra ChatGPT

Python字符串和整数连接[重复]

这个问题在这里已经有了答案:Making a string out of a string and an integer in Python [重复](6 个答案)5 年前关闭。

我想在 for 循环中使用附加的整数创建一个字符串。像这样:

for i in range(1, 11):
  string = "string" + i

但它返回一个错误:

类型错误:+ 不支持的操作数类型:“int”和“str”

连接字符串和整数的最佳方法是什么?

应该t it be range(1,10)`?
你的问题不清楚。你想得到什么输出? string = "string10"string = "string1string2string3string4string5string6string7string8string9string10"?十个不同的变量?
@stephan:+1,但应该是 range(1,11) :)
@Tim:甚至可能 range(11) 正在看评论......
@michele您有机会更改此问题的已接受答案吗?反引号已弃用,不应使用。

P
Peter Mortensen

笔记:

此答案中使用的方法(反引号)在更高版本的 Python 2 中已弃用,并在 Python 3 中删除。请改用 str() 函数。

您可以使用:

string = 'string'
for i in range(11):
    string +=`i`
print string

它将打印 string012345678910

要获得 string0, string1 ..... string10,您可以将其用作 YOU suggested

>>> string = "string"
>>> [string+`i` for i in range(11)]

对于 Python 3

您可以使用:

string = 'string'
for i in range(11):
    string += str(i)
print string

它将打印 string012345678910

要获得 string0, string1 ..... string10,您可以将其用作 YOU suggested

>>> string = "string"
>>> [string+str(i) for i in range(11)]

如果我输入这个:47,那么为什么我会在我的字符串中得到这个:u'47'
这个答案已经过时了。反引号已过时,已在 Python 3 中删除。有关详细信息,请参阅 this question。这个问题的其他答案是更好的解决方案。
@RogerFan,是的!不知道,我的回答是如何得到这么多赞的o_o 没想到会这样!
反引号相当于 repr() 函数,而不是 str()。对于非整数值,repr()str() 结果可能会有很大差异。
在 Python3 中,您可以像这样使用 f 字符串: string = f'{str}{number}'
Y
YOU
for i in range (1,10):
    string="string"+str(i)

要获得 string0, string1 ..... string10,您可以这样做

>>> ["string"+str(i) for i in range(11)]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10']

我错过了一些东西来获得反对票吗?
仍然值得一提的是,反引号等价于 repr(),而不是 str()
巴斯蒂安,谢谢你的来信,但我想我不会再把它放回去了。
嗯,我试图取消我的投票(只是一个测试),然后再次投票;投票被压制,但我不能再投票了......(“除非编辑此答案,否则您的投票现在已锁定”)
@Bastien,是的,有 5 分钟的窗口可以撤消赞成/反对票,但是一旦结束,它就会卡住并且在下一次编辑之前无法进行不同的投票。我认为这是设计使然
E
Eric Leschinski
for i in range[1,10]: 
  string = "string" + str(i)

str(i) 函数将整数转换为字符串。


I
Ignacio Vazquez-Abrams
string = 'string%d' % (i,)

当您有多个格式说明符时,您只需要使用一个列表进行格式化,否则,它很丑:)
那不是一个列表,那是一个元组。如果要格式化的单个项目本身就是一个元组,你也需要它。
P
Peter Mortensen
for i in range(11):
    string = "string{0}".format(i)

您做了 (range[1,10]):

类型错误,因为括号表示列表的索引 (a[3]) 或切片 (a[3:5]),

一个 SyntaxError,因为 [1,10] 无效,并且

由于 range(1,10) 为 [1, 2, 3, 4, 5, 6, 7, 8, 9],因此出现双倍错误,而您似乎想要 [0, 1, 2, 3, 4、5、6、7、8、9、10]

string = "string" + i 是一个 TypeError,因为您不能将整数添加到字符串(与 JavaScript 不同)。

查看 Python's new string formatting method 的文档。它非常强大。


(更正:如果您使用 range={(1,10): "foo"},那么 range[1,10] 实际上是一个语法有效的表达式。)
P
Peter Mortensen

您可以使用生成器来执行此操作!

def sequence_generator(limit):
    """ A generator to create strings of pattern -> string1,string2..stringN """
    inc  = 0
    while inc < limit:
        yield 'string' + str(inc)
        inc += 1

# To generate a generator. Notice I have used () instead of []
a_generator  =  (s for s in sequence_generator(10))

# To generate a list
a_list  =  [s for s in sequence_generator(10)]

# To generate a string
a_string =  '['+ ", ".join(s for s in sequence_generator(10)) + ']'

P
Peter Mortensen

如果我们想要像 'string0123456789' 这样的输出,那么我们可以使用 map 函数和 stringjoin 方法。

>>> 'string' + "".join(map(str, xrange(10)))
'string0123456789'

如果我们想要一个字符串值列表,那么使用列表推导方法。

>>> ['string'+i for i in map(str,xrange(10))]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9']

笔记:

对 Python 2.x 使用 xrange()。

对 Python 3.x 使用 range()。


也许链接(非裸体)到所有这些功能的文档? (但没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的。)
P
Peter Mortensen

我做了别的事情。

我想替换列表列表中包含短语的单词。

我想用一个新词替换该字符串/单词,该单词将成为字符串和数字之间的连接,并且该数字/数字将指示短语/子列表/列表列表的位置。

也就是说,我用一个字符串和一个递增的数字替换了一个字符串。

myoldlist_1 = [[' myoldword'], [''], ['tttt myoldword'], ['jjjj ddmyoldwordd']]
    No_ofposition = []
    mynewlist_2 = []
    for i in xrange(0, 4, 1):
        mynewlist_2.append([x.replace('myoldword', "%s" % i + "_mynewword") for x in myoldlist_1[i]])
        if len(mynewlist_2[i]) > 0:
            No_ofposition.append(i)

mynewlist_2
No_ofposition

J
Jemshit Iskenderov

字符串和整数的连接很简单:只需使用

abhishek+str(2)

如果它如此简单,也许可以解释(在这里或在答案中)为什么前七个答案不是?例如,后来的 Python 版本有什么变化吗?