Python 一行,用于从文本中提取 url

Python one liner for extracting url from text

我的目标是编写一个用于从文本中提取 URL 的代码。问题是我什至无法从 STDIN 读取数据。到目前为止我的实验:

└──> grep -i http: flashgot.log | python -c 'import sys; import re; for line in sys.stdin: print line'
  File "<string>", line 1
    import sys; import re; for line in sys.stdin: print line
                             ^
SyntaxError: invalid syntax


└──> grep -i http: flashgot.log | python -c 'import sys; import re; x = [print line for line in sys.stdin]'
  File "<string>", line 1
    import sys; import re; x = [print line for line in sys.stdin]
                                    ^
SyntaxError: invalid syntax

第二个计划是使用 here here here or here

中的一些建议

我通过使用 sys.stdout.write 而不是 print 让你的代码片段工作:

grep -i http: flashgot.log | python -c 'import sys; import re; [sys.stdout.write("%s\n" % line) for line in sys.stdin]'

我认为问题不在于阅读标准输入,而在于找到正确的语法以在一行中使用。在尝试您的脚本时,for 似乎不能作为 single-line 语法中的块使用,list-generator 中的 print 也不能。

PS:在尝试 one-line 函数时,我发现 lambda 有时会派上用场。您稍后可能会发现它在您的脚本中很有用