使用Python读取以分号分隔的文本的TXT文件

问题描述 投票:0回答:2

文本文件中的样本数据如下:

从表1中选择*;从表2中选择*;从表3中选择*;从表4中选择*

我想阅读此文本并在分号(;)处分成多行并单独处理每一行。 基本上每一行代表一个选择查询,我需要对数据库进行一一查询

我尝试了下面的代码,但出现错误: AttributeError: 'list' object has no attribute 'split'

ListData = open(FilePath).readlines()
for line in ListData.split(';'):


data.append(line)

还尝试了下面的代码,但收到错误 AttributeError: '_io.TextIOWrapper' object has no attribute 'split'

with open(SQLFilePath) as f:
    for line in f.split(';'):
      data.append(line)

谢谢

python-3.x pandas list dataframe
2个回答
0
投票

尝试使用for()。例如:

text='Select * from Table1; Select * from Table2; select * from table3;Select * from table4'
for t in text.split(';'):
    print(t)

答案:

Select * from Table1
 Select * from Table2
 select * from table3
Select * from table4

如果从文件中读取数据,可以使用pandas:

import pandas as pd
df=pd.read_csv(r'C:\Users\Desktop\test.txt', header = None)
t=[]
for index, row in df.itertuples():
    t=t+str(row).split(';')

控制台:

print(t)
['Select * from Table1', ' Select * from Table2', ' select * from table3', 'Select * from table4', 'Select * from Table1', ' Select * from Table2', ' select * from table3', 'Select * from table4']

0
投票

您无法使用 str.split() 方法拆分列表,您必须对“ListData”列表中包含的字符串调用该方法。请记住,当您调用 open() 函数时,默认情况下使用换行符作为分隔符来分隔列表的每个元素。

这就是我能够做到的:

    with open(FilePath, "r") as file:
    # Read the entire file into a list
    readData = file.readlines()
    # Conversion into a string
    finalData = " ".join(elem for elem in readData)
    for line in finalData.split(';'):
        print(f"Line: {line.strip()}")

请记住对行进行任何必要的处理,例如在将 readData 列表的元素转换为字符串之前去除空格(这对 SQL 不利)。

© www.soinside.com 2019 - 2024. All rights reserved.