0

我正在尝试在 python 中创建一个函数,它返回给定瓦片宽度 w 的 w-shingling ,但希望 shingled 列表中的字符串都是小写字母。

我试过把 [c.lower() for c in inputFile] 和这类东西放在一起。

import io

sample_text = io.StringIO("This is a sample text. It is a ordinary string but simulated to act as the contents of a file")


def wShingleOneFile(inputFile, w): 
    for line in inputFile:
      words = line.split() 
      [c.lower() for c in inputFile]
      return [words[i:i + w] for i in range(len(words) - w + 1)]

print(wShingleOneFile(sample_text, 3))

这是打印时的输出:


[['This', 'is', 'a'], ['is', 'a', 'sample'], ['a', 'sample', 'text.'], ['sample', 'text.', 'It'], ['text.', 'It', 'is'], ['It', 'is', 'a'], ['is', 'a', 'ordinary'], ['a', 'ordinary', 'string'], ['ordinary', 'string', 'but'], ['string', 'but', 'simulated'], ['but', 'simulated', 'to'], ['simulated', 'to', 'act'], ['to','act', 'as'], ['act', 'as', 'the'], ['as', 'the', 'contents'], ['the', 'contents', 'of'], ['contents', 'of', 'a'], ['of', 'a', 'file']]

但我希望所有这些字母都是小写的。

4

1 回答 1

0

将 line.split() 更改为 line.lower().split()

另请注意,python 中的字符串是不可变的,因此例如在您提供的示例中,您需要将列表理解 [c.lower() ... inputFile] 分配回 inputFile。在这种情况下,它也应该在您当前显示它的循环之前进行转换。

于 2019-04-14T01:26:11.463 回答