在一个字符串中创建一行

时间:2010-07-22 17:17:15

标签: python

我从this网站获得了一个机器人,我一直很开心。但是我想添加一个离开命令。 它的工作方式是当有人写

 away [reason]

然后它保存了原因,当别人输入他的名字时,机器人sais“他不可用,他留下了一个注意'[原因]'”或类似的东西。 当有人写入机器人时我得到的输入是

 :NickName!email@gtanet-GTMJLJRI83.nextgentel.com
 PRIVMSG #mychat :away Im going
 fishing.

使用此

 line[0][line[0].index(":")+1:line[0].index("!")]

我得到了这个人的用户名(在这种情况下,它是NickName),我需要使用line [4:](我正在钓鱼)之后提取所有行,这就像一个魅力。 但是我需要把它变成一个字符串,因为它不能返回一个字符串和一个列表。

tl; dr 我得到一个列表作为值,我希望它用字符串返回它,我该怎么办?

3 个答案:

答案 0 :(得分:1)

你可以这样做你想做的事:

line = [
    ':NickName!email@gtanet-GTMJLJRI83.nextgentel.com',
    'PRIVMSG #mychat :away Im going',
    'fishing.'
]

away = '\n'.join(line[1:])
needle = ':away '
away = away[away.index(needle) + len(needle):]
print away

结果:

Im going
fishing.

如果您希望一行上的输出使用' '.join(line[1:])而不是'\n'.join(line[1:])

答案 1 :(得分:0)

如果要将列表转换为字符串,只需使用'x'.join(mylist),其中x是每个元素之间所需的字符(例如空格,逗号等),那么您可以将其连接到你的另一个字符串。

虽然我猜我有两种不同的方式,但我不确定哪种方式更快(或者你是否会做得足够有效)

...
mylist.append(mystr)
return ' '.join(mylist)

...
return ' '.join(mylist) + ' ' + mystr

虽然我认为前一种方式看起来更好。

修改
如果您的列表包含非字符串,则可以将生成器表达式提供给.join()

return ' '.join(str(_) for _ in mylist)

答案 2 :(得分:0)

如果是一个字符串列表,你可以这样做:

''.join(stringlist)

连接所有字符串,使其成为一个字符串。

请参阅str.join()