How to process raw data (in python)?
***我并没有很好地解释这一点,所以希望这次编辑更有意义:基本上,我必须编写适用于大量测试用例的代码,下面的输入只是一个例子。所以我不能手动将输入输入输入到我的函数中
假设我有以下输入:
1 2 3 | 0 4 0,2,2,3 |
我需要生成某种输出,比如
1 | 1 |
号
我该怎么做?
我的意思是,如果我通常有问题,我可以定义一个函数,然后手动输入值,但是我如何读取原始数据(对数据执行一系列函数/操作)?
(对于分配,我应该接收stdin->上的输入,并在stdout上打印正确的输出
在这种情况下,我们可以很容易地使用
1 | text_input = raw_input("Enter text:") |
号
如果您使用的是python 3,那么可以使用
1 | text_input = input("Enter text:") |
号
或者,如果您喜欢使用命令行参数运行程序,请使用
1 2 3 4 5 | import sys for i in sys.argv: if i >= 1: command = i #do something with your command |
号
以下是一本很好的书:http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch06s03.html
编辑
好的,只需理解这里真正的问题。
简单的方法:将数据存储在文本文件中,然后用程序读取数据。
1 2 | f = open("path/to/command.txt", 'r') commmands = f.read() |
号
这样您就可以快速处理数据。处理后,您可以将其写入另一个文件:
1 2 | output_file = open("path/to/output.txt", 'w') output_file.write(result) |
号
至于如何处理命令文件,您可以自己构造它,并使用
提示:不要忘记关闭文件,建议使用
1 2 3 | with open('file.txt', 'w') as f: #do things f.write(result) |
号
有关文件处理的详细信息:
http://docs.python.org/3.3/tutorial/inputout.html读写文件
希望有帮助!
stdin只是一个由
1 2 3 4 5 | sum = 0 for line in sys.stdin: item = int(line.strip()) sum += item print sum |
号
或者只是
1 2 3 | entire_raw_data = sys.stdin.read() lines = entire_raw_data.split() ... # do something with lines |
另外,您也可以迭代调用
1 2 | for line in iter(raw_input, ''): # will iterate until an empty line # so something with line |
。
相当于:
1 2 3 4 5 | while True: line = raw_input() if not line: break # so something with line |
另请参见:https://en.wikibooks.org/wiki/python_programming/input_and_output
通常你想做:
1 | the_input = input(prompt) # Python 3.x |
。
或
1 | the_input = raw_input(prompt) # Python 2.x |
。
然后:
1 | print(output) # Python 3.x |
或
1 | print output # Python 2.x |
。
但是,您也可以(但可能不想)这样做:
1 2 3 | import sys the_input = sys.stdin.readline() bytes_written = sys.stdout.write(output) |
这或多或少是
据我所知,你想要这样的东西:
1 2 3 4 5 6 7 | def f(x, y, z): return 2*x + y + z + 1 a = int(input("Enter a number:")) # presuming Python 3.x b = int(input("Enter another number:")) c = int(input("Enter the final number:")) print(f(a, b, c)) |
。
如果运行,会出现如下情况:
1 2 3 4 | >>> Enter a number: 7 >>> Enter another number: 8 >>> Enter the final number: 9 >>> 32 |
号
使用这个原始输入(),它是基本的python输入函数。
1 | myInput = raw_input() |
有关原始输入的更多信息,请参阅:
http://docs.python.org/2/library/functions.html原始输入
您可以使用函数