gpt4 book ai didi

python - 使用python计算文件中单词之间的空格数?

转载 作者:行者123 更新时间:2023-11-30 23:37:36 25 4
gpt4 key购买 nike

我真的很接近。我通读了“number of space between each word ”,它确实提供了这一行:

counts = [(len(list(cpart))) for c,cpart in groupby(s) if c == ' ']

但我真的不明白......我明白,或者假设,C是分隔符,S是你分组的依据,你要放置结果列表?(python新手,数组?) 转换为计数(S 指的是先前实例化的变量)

我如何确定这样的事情?

                                                  AMOUNT       DATE       
NAME ACCOUNT# DISCOUNT DUE DUE

我正在创建一个程序,允许我查看随机创建的 COBOL 输出文件头并使用它来创建关联的 PIC(X)。

解决方案输出示例为:

  1. PIC X(30) 值空间。
  2. PIC X(6) 值为“金额”。
  3. PIC X(8) 值空间。
  4. PIC X(4) 值为“日期”。

重要的部分是数字。我显然可以确定字符串的长度,但我不确定如何确定空格......

这是迄今为止我所展示的我正在工作的内容,哈哈:

from itertools import groupby
from test.test_iterlen import len
from macpath import split
from lib2to3.fixer_util import String

file = open("C:\\Users\\Joshua\\Desktop\\Practice\\cobol.cbl", 'r+')

line1 = file.readline()
split = line1.split()
print (split)
print ()

counts = [(len(list(cpart))) for c,cpart in groupby(split) if c == ' ']

print (counts)


index = 0
while index != split.__len__():
if split[index].strip() != None:
print ("PICX(" + ") VALUE " + "\"" + split[index] + "\".")
elif counts[index] == None:
print ("PICX(" + ") VALUE " + "\"" + split[index] + "\".")
index+=1

最佳答案

我将首先解释第一行:

counts = [(len(list(cpart))) for c,cpart in groupby(s) if c == ' ']

s 实际上是输入字符串。因此,要运行它,您可以从以下开始:

s = "   NAME          ACCOUNT#         DISCOUNT         DUE         DUE"

groupby(s) 返回元组的迭代器。该元组中的第一个值是输入字符串中的字符,第二个值是另一个(嵌套)迭代器,它将迭代该字符的重复值。放入 list 形式(用于说明),它看起来像这样:

groupby("hello!!!")
[('h', ['h']), ('e', ['e']), ('l', ['l', 'l']), ('o', ['o']), ('!', ['!', '!', '!'])]

所以,c不是分隔符,而是保存字符串s中每个字符的变量,而cpart是迭代器遍历c的所有连续值。一旦你调用len(cpart),它就会给出一个[c,c,c,...]列表(每个项目都是相同的!)以及该列表的长度list 是字符c 重复的次数。通常它只会是一个。例如,对于 'NAME' 中的 'A',您将得到 c == Alist(cpart) = = ['A'] 。但对于 NAMEACCOUNT# 之间的空格,您将得到 c == ' 'cpart == [' ' 、''、''、''、''、''、''、''、''、'']

括号内的整个内容[]意味着它会生成一个列表,就像您在for循环中附加到列表一样,以及每个项目的值是for之前的表达式。这里,len(list(cpart)) 计算字符重复实例列表的长度。因此,它将是一个包含字符重复次数的列表。 if c == ' ' 表示仅当该字符为空格时该项目才会添加到列表中。

<小时/>

上面将计算空格。要计算单词数(例如,要获取 PIC X(6) VALUE "AMOUNT"),您只需执行以下操作:

word_counts = [ len(word) for word in s.split() ]

其中split(您已使用)返回一个单词列表,这些单词之前是一个由空格分隔的字符串。

关于python - 使用python计算文件中单词之间的空格数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com