文本文件中的样本数据如下:
从表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)
谢谢
尝试使用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']
您无法使用 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 不利)。