在 "lines.replace" 后面去除 \n

6
以在“conv:”后加空格的方式执行脚本,结果是一个“换行符”,如下所示:
    lines = lines.replace("www.","conv: ")

conv:
yahoo.com
conv:
yahoo.it
conv:
yahoo.org
conv:
yahoo.net

如何去除换行符(\n)?

在转换后删除空格字符:脚本将完美运行。

#!/usr/bin/python

with open('/home/user/tmp/prefix.txt') as f:
    lines = f.read()
    lines = lines.replace("http://","")
    lines = lines.replace("www.","conv:")

    urls = [url.split('/')[0] for url in lines.split()]
    print ('\n'.join(urls))

结果如下:

conv:yahoo.com
conv:yahoo.it
conv:yahoo.org
conv:yahoo.net

我想要:

conv: yahoo.com
conv: yahoo.it
conv: yahoo.org
conv: yahoo.net

使用替换空格的方式输出是什么?使用 rstrip() 呢?例如:lines = lines.replace("www.","conv: ".rstrip()) - Stefano Saitta
你好,相同的输出结果。 - Marco Rimoldi
我不明白问题,那么期望的输出是什么? - Stefano Saitta
1
尝试运行 urls = [url.split('/')[0] for url in lines.split('\n')] - ssm
1
@MarcoRimoldi,您不需要使用列表推导式来获得所需的输出... - heinst
4个回答

2

这是一行文本。

urls = [url.split('/')[0] for url in lines.split()]

将您的行以空格分割,因此您将得到conv:部分作为单个URL。

您可以执行以下操作

urls = [url.split('/')[0].replace("conv:", "conv: ") for url in lines.split()]

相反。


1
你甚至不需要列表推导式:

#!/usr/bin/python

with open('/home/user/tmp/prefix.txt') as f:
    lines = f.read()
    lines = lines.replace("http://","")
    lines = lines.replace("www.","conv: ")

    print lines

@MarcoRimoldi 如果你这样做,你将避免不必要的列表推导式。 - heinst

1
从您提供的代码中实现目标的最简单方法是更改:
urls = [url.split('/')[0] for url in lines.split()]

urls = [url.split('/')[0] for url in lines.split('\n')]

因此,您将在换行符上拆分lines字符串,而不是在所有空格上。

-1

为什么要使用 \n 连接打印,而此时你已经有了像 urls= ['conv: ', 'yahoo.com'] 这样的东西。因此 print (''.join(urls)) 就可以工作了 - 打印会自动换行,(不知道输入文件,假设每行一个 URL)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接