问题描述
就像我们在 Unix shell
中使用 while 从文件中逐行循环读取一样
文件中的数据:ABC.txt
"A","B","C"
"E","F","A"
"S","H","DD","ADF"
"G","L","LI","LO","YAU"
"H","KK","AD"
"J","GH","KL"
"L","OP","AM"
"O","LA","WE"
我的代码:
with open('ABC.txt',"r") as f:
lines = f.readlines()
parameter={ "empid":"3","empcd":"56","ide": [ lines ] }
我实际上正在寻找的是逐行读取文件并
应该作为参数传递给 "ide" : [ line ]
假设它经过第一次迭代,整个字符串-> "A","C"
将被传递给“ide" : [ "A","C"]
parameter={ "empid":"3","ide": [ "A","C" ] }
第二次迭代:
parameter={ "empid":"3","ide": [ "E","A" ] }
第三次迭代:
parameter={ "empid":"3","ide": [ "S","ADF" ] }
循环将继续直到从文件中读取所有记录
在 Unix 中我知道如何读取文件但不擅长使用 python 如何使用 python 实现这一点?
我的 Unix 代码:
while read -r line
do
var=`echo $line`
paramter = '{ "empid":"3","ide": [ $(( var )) ] }'
done < ABC.txt
解决方法
您可以使用 ast.literal_eval
将行转换为列表。例如:
#include <stdio.h>
#include "mpi.h"
int main(int argc,char* argv[])
{
int menum,nproc;
int n,tag,num;
MPI_Status info;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&menum);
MPI_Comm_size(MPI_COMM_WORLD,&nproc);
printf("menum:%d nproc :%d",menum,nproc);
if (menum == 0) {
printf("\ninsert number: ");
scanf_s(" %d",&n);
tag = 10;
MPI_Send(&n,1,MPI_INT,MPI_COMM_WORLD);
}
else {
tag = 10;
MPI_Recv(&n,MPI_COMM_WORLD,&info);
}
MPI_Get_count(&info,&num);
MPI_Finalize();
return 0;
}
打印:
from ast import literal_eval
with open("ABC.txt","r") as f_in:
for line in f_in:
print(
{"empid": "3","empcd": "56","ide": literal_eval("[" + line + "]")}
)
,
您可以使用json.
:
import json
for line in open("ABC.txt"):
parameter = { "empid":"3","empcd":"56","ide": json.loads(f"[{line}]") }
print(parameter)
,
您也可以使用 lambda 函数
fun1 = lambda x:x.strip().replace('"','').split(",")
new_lines = [fun1(i) for i in lines]
print(new_lines)
输出:
[['A','B','C'],['E','F','A'],['S','H','DD','ADF'],['G','L','LI','LO','YAU']]