2

首先,我会提到我是 Python 语言的新手,并且来自网络背景。如果您想知道我为什么使用 Python 2.5,那是由于某些设备限制。

我要做的是计算数据字符串中的行数,如下所示。(不在文件中)

data = ['This','is','some','test','data','\nThis','is','some','test','data','\nThis','is','some','test','data','\nThis','is','some','test','data','\n']

不幸的是,我似乎无法获得正确的语法来计算\n。到目前为止,这就是我想出的。

num = data.count('\n')
print num

上面的代码对于预期的输出显然是错误的,因为它相对于测试数据返回 1,如果可能的话,我希望看到它返回 4。它只发现 '\n' 中的 1 个是示例中的最后一个,因为它匹配。

如果我使用以下代码来查找所有这些代码,则由于语法原因,它不会运行。

num = data.count (\n)
print num

我基于以下链接中的代码,示例是第三个。

http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/strings3.html

有没有办法做到这一点,或者我应该寻找不同的解决方案?


感谢您的帮助

4

2 回答 2

5

list.count用于获取列表中某个项目的计数,但您需要在每个项目中进行子字符串搜索才能将计数设为 4。

>>> data = ['This','is','some','test','data','\nThis','is','some','test','data','\nThis','is','some','test','data','\nThis','is','some','test','data','\n']

包含的项目总数'\n'

>>> sum('\n' in item for item in data)
4

'\n'中所有s 的总和data

>>> data = ['\n\nfoo','\n\n\nbar']
>>> sum(item.count('\n') for item in data)
5
于 2013-09-04T16:30:07.323 回答
2

您的第一个代码不起作用,因为您'\n'的实际字符串列表中只有一个。当您与'\n'类似的东西进行比较时'nThis',它会说不\n等于该字符串并且不将其包括在计数中。

你可以做的是将列表加入一个字符串,如下所示:

x = ''.join(num)

然后尝试使用count字符串类的方法。这将让您在总字符串中找到等效于 '\n' 的子字符串。

y = x.count('\n')
print y
于 2013-09-04T16:36:08.820 回答