0

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

问题是当我得到一个单独的 URL 时,它被拆分为 URL 中的每个字符。我在处理后得到字符时会执行 ''.join(something) 。

例如

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

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

取样我得到:

文件输入:“www.cnn.com” sys.std 处理后输出:['w','w','w','.','c','n','n','。 ','c','o','m']

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

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

谢谢

4

1 回答 1

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']
于 2012-08-23T16:24:13.583 回答