【问题标题】:Counting words that start with capital letter on python [closed]在python上计算以大写字母开头的单词[关闭]
【发布时间】:2020-07-28 04:31:39
【问题描述】:

**我是这里的新手。我正在开发一个程序,该程序使用 python 计算 csv 文件中每行以大写字母开头的单词。我使用了正则表达式,但我认为它不起作用。这是我制作的示例代码,但不幸的是它没有给出我想要的输出。希望你能帮助我。

**

             import re
             line_details = []
             result = []
             count = 0
             total_lines = 0
             class CapitalW(): #F8 Word that starts with capital letter count   
             fh = open(r'20items.csv', "r", encoding = "ISO-8859-1").read()
             #next(fh)
             for line in fh.split("n"):
               total_lines += 1
                   for line in re.findall('[A-Z]+[a-z]+$', fh): 
                      count+=1
                      line_details.append("Line %d has %d Words that start with capital letter" % 
                      (total_lines, count))
             for line in line_details:
             result7 = line
             print (result7)

**- 结果应该如下:

第 1 行有 2 个以大写字母开头的单词

第 2 行有 5 个以大写字母开头的单词

第 3 行有 1 个以大写字母开头的单词

第 4 行有 10 个以大写字母开头的单词**

【问题讨论】:

  • 有点工作是什么意思?
  • 你应该修复缩进。
  • 谢谢。我会解决的
  • 好的,那么您的实际结果与预期结果有何不同? (请记住,我们看不到您的输入文件。)您是否注意到差异的模式?你能想到这种模式可能来自哪里吗?
  • 如果你修复了“缩进”,你应该更新你的帖子。否则应该如何发现剩余的错误?

标签: python regex csv


【解决方案1】:

在正则表达式中,您不需要 $ 字符,因为 [A-Z]+[a-z]+$ 仅当行中有一个单词时才匹配。所以 [A-Z]+[a-z]+ 代替。 另一个是,我从编码中看到,您可能使用不在 a-z 之间的字符,例如 é。因此,您可能还必须将这些添加到模式中。 [A-ZÉÖ]+[a-zéö]+ 并添加所有其他特殊字符。

【讨论】:

  • 另外,您必须准确使用第二个 for 循环中的选项卡。
  • 是的,我修复了标签。它显示了 1 个输出。我仍在试图弄清楚为什么它无法读取 csv 文件中的每一行。
【解决方案2】:

假设一个固定的缩进,除了 matebende 的回答,这些是需要进一步更正的:

  • for line in fh.split("n"): 应该是 for line in fh.split("\n"):
  • 初始化count = 0 必须在这个for 循环内。
  • for line in re.findall('[A-Z]+[a-z]+$', fh): 中的fh 是错误的,必须是line

【讨论】:

    猜你喜欢
    • 2014-01-02
    • 2022-01-08
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2023-02-21
    相关资源
    最近更新 更多