打印文件块时获取额外的字符

时间:2020-08-27 20:03:46

标签: python discord.py

所以我有一个文件,每行都有一个url。我正在使用discord.py将其打印到Discord频道。这是我的代码:

with open('myfile.txt') as f:
     for line in itertools.zip_longest(*[f]*10, fillvalue = ' '):
           await channel.send(line)

我使用此代码是因为Discord在邮件中的字符数限制为2000。我不知道我的名单有多久,因为它是从另一个Python脚本定期更新的。因此,我选择使其一次打印10行。使用上面的代码将始终打印整个文件,行数不必是10的倍数,这正是我想要的。

问题在于,每个输出消息都用()括起来,并且在每个项目的末尾添加/ n或n%27。如您所料,这会断开链接。

我该怎么做呢?我可以忍受(),但必须删除项目末尾的内容。基本上,我希望整个内容打印时都用“”分隔。

请帮助。谢谢!

LE:为澄清起见,输入(文件内容)如下:

https://www.google1.com
https://www.google2.com
https://www.google3.com
https://www.google4.com

我的代码输出如下:

('https://www.google1.com/n'、'https://www.google2.com/n'、'https://www.google3.com/n'、'https:/ /www.google4.com/n%27)

2 个答案:

答案 0 :(得分:0)

因此,在尝试了几种想法之后,我终于设法使其正常工作。我的代码将从文件中读取的每一行都转换为一个元组。因此,它打印到我的不和谐频道上的所有内容都是元组,因此是换行符。

如果还有其他人遇到此问题,我通过将元组转换为字符串然后打印来解决此问题。现在输出看起来与我的文件内容相同。

新代码是这样的:

with open('myfile.txt') as f:
     for line in itertools.zip_longest(*[f]*10, fillvalue = ' '):
           x = ''.join(line)
           await channel.send(x)

答案 1 :(得分:0)

您也可以通过这种方式修复

with open("myfile.txt", 'r') as f:
    for line in f.readlines():
        await channel.send(line.split('/')[0])