在Python中从sys.stdin重建URL字符串

时间:2012-08-23 16:14:08

标签: python

我有一个从大型日志文件中获取输入的脚本。此文件具有编码的URL。 我正在使用标准输入从文件中获取这些URL。我希望单独处理每个URL。

问题是,当我将单个URL分成URL中的每个字符时。我做'.join(某事)然后在处理后得到字符。

e.g。

for line in sys.stdin:
    line = line.strip()
    line1 = ''.join(line)

我还尝试收集网址中的所有字符然后加入。结果还是一样。

我拿出样品:

从档案输入:“www.cnn.com” 在sys.std和处理之后输出:['w','w','w','。','c','n','n','。','c','o','米']

列表出现是因为我这样做了。否则我从sys.stdin获得www.cnn.com。但底层结构与输出相同。

我想要的是: 文件输入:“www.cnn.com” 输出:“www.cnn.com”(这应该是一个字符串。不是单个字符串)

由于

1 个答案:

答案 0 :(得分:1)

我认为您的标准输入可能会出现乱码。考虑一下这个脚本:

#stdin.py
import sys
for line in sys.stdin:
    print line.strip()

然后输入到它的输入按预期工作:

$ echo -e "www.cnn.com\nwww.test.com" | python stdin.py 
www.cnn.com
www.test.com

如果你在一个字符串上调用list(),它会按字符分割它:

>>> list("test")
['t', 'e', 's', 't']

我猜你可能想要做的是读取整个输入然后分割成行,如下所示:

import sys
lines = sys.stdin.read().split()
print lines

运行它,我得到:

$ echo -e "www.cnn.com\nwww.test.com" | python stdin.py 
['www.cnn.com', 'www.test.com']