【发布时间】:2019-07-05 06:57:38
【问题描述】:
我正在从 2 个文件创建命令:一个在 3 行中有命令('comando.txt'),第二个有参数(file.txt) txt 中的命令包含无法在 csv 或列表上设置的字符,例如 (" ' 和 ,)。
例如,命令结果是 TEXT01:12TEXT02"LAS'5022268h'0023; for df.loc[0]。
- 打开 comando.txt 后,它会将行号传递给 paso 函数。
- 如果打印 i = row,则函数从 df 接收每个索引行。
- 指令
for line in f1:i 的值甚至没有通过它上面收到的print(i)
import csv
import pandas as pd
new_text = ''
def paso(row):
i = row
j=0
result=''
# 2 - it print row number that function
print(i)
for line in f1:
# 3 - ERROR is here, the unique value for i=0, never pass
#print(i)
strip = line.strip()
result = result + add_para(strip,i,j)
j=j+1
#The result is TEXT01:012TEXT02"LAS'5022268h'0023;
return result
def add_para(comando,valor,j):
if j< columnas:
#print(row)
comando = comando +str(df.iloc[row,j])
return comando
else:
comando=comando
return comando
with open('file.txt') as f2:
df = pd.read_csv(f2,header=None)
filas = df.shape[0]
columnas = df.shape[1]
with open('comando.txt') as f1:
for row in range(filas):
for col in range(1):
# 1 - it passes row number to function "paso"
regreso = paso(row)
#print(regreso)
打印输出
In [44]:
with open('comando.txt') as f1:
for line in f1:
print(line.strip())
Out[45]:
TEXT01:
TEXT02"LAS'
h'0023;
In [45]: df.head()
Out[45]: 0 1
0 12 5022268
1 13 5022269
2 14 5022277
3 15 5022279
4 16 5022377
没有显示错误,但行号i如何传递到for line in f1:
例如,对于df.loc[0],命令结果是TEXT01:12TEXT02"LAS'5022268h'0023;,对于df.loc[1],第二个命令是TEXT01:13TEXT02"LAS'5022269h'0023; ...等
【问题讨论】:
-
似乎你在“影子变量”上受了很多苦,
def add_para, i had no idea where didrow 块来自 -
是的,我有,我必须检查一下,有什么信息链接吗?
标签: python pandas function for-loop