Python 返回文本文件中的行

Python 返回文本文件中的行,python,python-3.x,reactjs,pandas,flask,Python,Python 3.x,Reactjs,Pandas,Flask,在前端(React),用户上传文本文件并通过POST请求将其发送到后端(Flask)。 我通过file=request.files['file']获取文件。 现在,有时文本文件可能包含多行信息,这些信息不会被视为列标题。例如,它可能看起来像: 2020-06-30 Users's name Company column1 name column2 name column3 name data data data data da

在前端(React),用户上传文本文件并通过POST请求将其发送到后端(Flask)。 我通过
file=request.files['file']
获取文件。 现在,有时文本文件可能包含多行信息,这些信息不会被视为列标题。例如,它可能看起来像:

2020-06-30
Users's name
Company

column1 name   column2 name   column3 name
data           data           data
data           data           data
现在,如果我使用pandas,我将运行以下代码:

import pandas as pd

read_file = pd.read_csv(file, delimiter="\t", error_bad_lines=False, header=None, nrows=50)
它将返回文本文件的前3行,并跳过其余行,错误为:
expected 1 fields,saw 3

我需要返回文本文件中显示的前50行。我如何才能做到这一点?

类似于:


df=pd.read\u csv(fname,skiprows=4,**所有您的kwargs)

读取行的示例如下:

file = open("test_file.txt", 'r')

for position, line in enumerate(file):
    if position in range(0, 50):
        print(line)

我对panda不太了解,无法将其实现到代码中,但您应该能够将其复制到代码中。

以下是我必须做的事情,以便在不忽略非标题行的情况下返回整个文本文件

file = request.files['file']
file_decoded = file.read().decode('utf-8')
file_data = pd.read_csv(io.StringIO(file_decoded), error_bad_lines=False,
    delimiter='\n', header=None, nrows=50)
然后发送到前端:

jsonized = file_data.to_json(orient='values')
#to_json is a pandas function
[
  ["2020-06-30"],
  ["user's name"],
  ["company"],
  ["column1 name   column2 name   column3 name"],
  ["data  data  data"]
]
json现在在前端看起来像这样:

jsonized = file_data.to_json(orient='values')
#to_json is a pandas function
[
  ["2020-06-30"],
  ["user's name"],
  ["company"],
  ["column1 name   column2 name   column3 name"],
  ["data  data  data"]
]

我将通过
orient

继续使用json的格式skiprows的问题是,它总是会根据给定的数据而变化。有时没有什么可以跳过的,它可能会直接进入列标题和数据中。有时,列标题会从文件的更深处开始。编写一个函数,通过检查数据来计算要跳过的行数。难道你不能找到第一行有选项卡吗?您好!虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。谢谢@Brian,这是一个有用的反馈。在这种情况下,我认为
skiprows
是不言而喻的,我甚至不知道我能写些什么来澄清它。谢谢。但是我得到了这个错误:TypeError:应该是str、bytes或os.PathLike对象,而不是FileStorage,因为行file=request.files['file']实际上是FileStorage(flask/werkzeug)中的一个实例。这将只得到0和49行,因为1到48不在
行中。这应该是
范围(0,50)
它仍然是错误的。它必须是
范围(0,50)
。使用
范围(0,49)
将只计算到48。
范围中的第二个数字
需要比要停止的数字多1。