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
有时会派上用场。您稍后可能会发现它在您的脚本中很有用
我的目标是编写一个用于从文本中提取 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
有时会派上用场。您稍后可能会发现它在您的脚本中很有用