- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 txt 文件,其格式为每行最多 784 个字符。每行都是 csv 中的一行,特定长度的字符是列。
我让它在第一行完美运行,但我不知道如何让它在文件中的每一行运行。我尝试了几种不同的方法,但我认为我只是走错了路。我希望你们能帮忙!代码如下:
with open('file.txt', 'r') as f, open('file.csv', 'w') as out_f:
each_line = f.readline()
filet = each_line[0]
srcky = each_line[1: 33]
clmst = each_line[34]
postd = each_line[35:43]
rcvdt = each_line[43:51]
mbrno = each_line[51:62]
pelcd = each_line[62:64]
plname = each_line[64:89]
pmfnam = each_line[89:114]
pmbidt = each_line[114:122]
pmbsex = each_line[122]
mmbrno = each_line[123:134]
mlname = each_line[134:159]
mmfnam = each_line[159:184]
mmbsex = each_line[184]
mmbidt = each_line[185:193]
grpid = each_line[193:199]
plncd = each_line[199:202]
aprno = each_line[202:211]
prvno = each_line[211:217]
psnam = each_line[217:232]
ptype = each_line[232:242]
pazip = each_line[242:251]
pprov = each_line[251]
lineCounter = each_line[252:260]
ssvdt = each_line[260:268]
ensvdt = each_line[268:276]
enplsv = each_line[276:278]
ensrsn = each_line[278:280]
becat = each_line[280:283]
diag1 = each_line[283:291]
diag2 = each_line[291:299]
diag3 = each_line[299:307]
diag4 = each_line[307:315]
diag5 = each_line[315:323]
diag6 = each_line[323:331]
diag7 = each_line[331:339]
diag8 = each_line[339:347]
diag9 = each_line[347:355]
diag10 = each_line[355:363]
endxf1 = each_line[363]
endxf2 = each_line[364]
endxf3 = each_line[365]
endxf4 = each_line[366]
pcdcd = each_line[367:376]
emod1 = each_line[376:378]
emod2 = each_line[378:380]
emod3 = each_line[380:382]
emod4 = each_line[382:384]
pcdqt = each_line[384:387]
pcdqt1 = each_line[387:389]
bilam = each_line[389:400]
netam = each_line[400:411]
alwam = each_line[411:422]
dctam = each_line[422:433]
copam = each_line[433:444]
ncvam = each_line[444:455]
cobsv = each_line[455:466]
ncrsn = each_line[466:468]
revcd = each_line[468:472]
drgcd = each_line[472:475]
sprc1 = each_line[475:483]
sprc2 = each_line[483:491]
sprc3 = each_line[491:499]
sprc4 = each_line[499:507]
sprc5 = each_line[507:515]
sprc6 = each_line[515:523]
filetc = each_line[523:570]
vvndno = each_line[570:580]
vname = each_line[580:610]
vadd1 = each_line[610:665]
vadd2 = each_line[665:720]
vcity = each_line[720:735]
vstate = each_line[735:737]
vzip = each_line[737:746]
hpatc = each_line[746:784]
icdver = each_line[784]
newfile = (filet + ',' + srcky + ',' + clmst + ',' + postd + ',' + rcvdt + ',' + mbrno + ',' + pelcd + ',' + plname + ',' + pmfnam + ',' + pmbidt + ',' + pmbsex + ',' + mmbrno + ',' + mlname + ',' + mmfnam + ',' + mmbsex + ',' + mmbidt + ',' + grpid + ',' + plncd + ',' + aprno + ',' + prvno + ',' + psnam + ',' + ptype + ',' + pazip + ',' + pprov + ',' + lineCounter + ',' + ssvdt + ',' + ensvdt + ',' + enplsv + ',' + ensrsn + ',' + becat + ',' + diag1 + ',' + diag2 + ',' + diag3 + ',' + diag4 + ',' + diag5 + ',' + diag6 + ',' + diag7 + ',' + diag8 +
',' + diag9 + ',' + diag10 + ',' + endxf1 + ',' + endxf2 + ',' + endxf3 + ',' + endxf4 + ',' + pcdcd + ',' + emod1 + ',' + emod2 + ',' + emod3 + ',' + emod4 + ',' + pcdqt + ',' + pcdqt1 + ',' + bilam + ',' + netam + ',' + alwam + ',' + dctam + ',' + copam + ',' + ncvam + ',' + cobsv + ',' + ncrsn + ',' + revcd + ',' + drgcd + ',' + sprc1 + ',' + sprc2 + ',' + sprc3 + ',' + sprc4 + ',' + sprc5 + ',' + sprc6 + ',' + filetc + ',' + vvndno + ',' + vname + ',' + vadd1 + ',' + vadd2 + ',' + vcity + ',' + vstate + ',' + vzip + ',' + hpatc + ',' + icdver)
out_f.write(str(newfile))
out_f.close
最佳答案
除了 @Joshua 对 for 循环的观察之外,您还可以将算法推广为更短的代码。 OP 的代码中也可能存在错误。 each_line[33]
被跳过。如果是故意的,下面的代码可以解释它:
import csv
# starts for each column
cols = (0,1,34,35,43,51,62,64,89,114,122,123,134,159,184,185,193,199,202,211,
217,232,242,251,252,260,268,276,278,280,283,291,299,307,315,323,331,
339,347,355,363,364,365,366,367,376,378,380,382,384,387,389,400,411,
422,433,444,455,466,468,472,475,483,491,499,507,515,523,570,580,610,
665,720,735,737,746,784,785)
# newline='' per csv documentation.
with open('file.txt') as f, open('file.csv','w',newline='') as out_f:
writer = csv.writer(out_f)
for each_line in f:
line = []
for i in range(len(cols)-1):
# compute the slice for each column
start,end = cols[i],cols[i+1]
# This may be an error in OP's code, but each_line[33] is skipped.
if end == 34:
end = 33
line.append(each_line[start:end])
writer.writerow(line)
关于python - 使用 python 将 txt 文件的每一行和部分部分读取到 csv 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53981944/
我在使用 io-ts 时遇到一些问题。我发现它确实缺乏文档,我取得的大部分进展都是通过 GitHub issues 取得的。不,我不明白 HKT,所以没有帮助。 基本上,我在其他地方创建一个类型,ty
我必须创建一个正则表达式来搜索整个文件,以找到与 Java XML 解析器的第一部分(但不是第二部分)的匹配项。这将用于防止某些 XXE 攻击。不幸的是,它确实必须是单个正则表达式,并且它确实需要搜索
我有一些简单的 Shared/_Header.cshtml 文件中的内容。 My Shared/_Layout.cshtml 通过调用插入该代码 @Html.Partial("_Header") 目前
我有一个 if-else 语句,其中: 条件 1:ID 匹配并且自动填充某些字段。然后 if 语句只填充其余字段 条件 2:ID 不匹配,所有字段均为空白。 ELSE 语句将它们全部填充 当我使条件
我正在开发一个单页滚动网站。我正在尝试实现 ScrollMagic 并固定第一部分,以便网站的其余部分滚动到固定部分的顶部。我尝试创建一个 jsfiddle 来显示问题,但我似乎无法让 jsfiddl
这是我的情况: 我想使用 Google AdWords 的转换脚本,但出于某种原因,他们代码段的 javascript 部分在我的页面上添加了一些我似乎无法摆脱的不需要的空白。 所以我正在查看的选项纯
寻找一种优雅的方式在页面上添加一次脚本,就是这样。 我有一个需要 2 个 CSS 文件和 2 个 JS 文件的部分 View 。在大多数地方,只需要其中 1 个部分 View 。但在单个页面上,我需要
我想要一个网站,该网站始终具有相同的部分,具有相同的 id 以及我想要显示的所有内容。我对 javascript 不太了解,我想知道如何删除除特定部分之外的所有内容。 最好的方法是否是只执行一个循环来
SQL 语句教程 (11) Group By 我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name)
我试图理解部分并认为我已经明白了。基本上,这是一种将部分应用程序应用于二元运算符的方法。所以我了解所有(2*) , (+1)等例子就好了。 但是在 O'Reilly Real World Haskel
有没有办法禁止在部分中覆盖给定的关键字参数?假设我要创建函数 bar总是有 a设置为 1 .在以下代码中: from functools import partial def foo(a, b):
我有这个使用节的 OpenMP 代码 #pragma omp parallel sections num_threads(8) { printf_s("Allo fro
我正在尝试重新创建 Apple 制作的有缺陷的 CNContactPickerViewController,因此我有一个数据数组 [CNContact],我需要将其整齐地显示在 UITableView
我有一个相对布局,其中包含一些 float 在 GridView 上的 TextView 。当我在网格中选择一个项目时,布局向下移动到屏幕的尽头,只有大约 1/5 的部分是可见的。这是使用简单的翻译动
我想在我的 tableView 中有两个部分。我希望将项目添加到第 0 节,然后能够选择一行以将其从第 0 节移动到第 1 节。到目前为止,我已将这些项目添加到第 0 节,但是当它关闭时数据不会加
我正在以自由职业者的身份开发支付控制软件,但我有一些关于 mysql 的问题。 。我有一个用作日志的表,名为“Bitacora”。在表中,我有一个名为 idCliente 的列,它是自己表中一个人的
我有一个 PFQueryTableViewController,我想向 tableview 添加部分,我这样尝试: - (PFQuery *)queryForTable { PFQuery *qu
我正在尝试编写一个查询,将部分匹配项与存储的名称值进行匹配。 我的数据库如下所示 Blockquote FirstName | Middle Name | Surname --------------
我正在开发一个语音备忘录应用程序,并且正在将文件保存到表格 View 中。我希望默认文件名显示为“新文件 1”,如果使用“新文件 1”,则它会显示为“新文件 2”,依此类推。 我正在尝试使用 do-w
我有以下简单的 HTML 布局 .section1 { background: red; } .section2 { background: green; } .section3 { ba
我是一名优秀的程序员,十分优秀!