句子的组字母
Group letters of a sentence
我对字符串中的字母分组有疑问。比如我想对一个句子进行分组:my name is Jhon 我想要这样的东西:myname ynamei nameis,等等...
我的代码是:
def letters(siq,data):
n=len(siq)
for i in range(data -1, n -6, 1):
yield siq[i:i+6]
test = 'My name is Jhon'
for i in range(1,4):
print(list(letters(test,i)))
我会这样做:
test = 'My name is Jhon'
length = 6
test = test.replace(' ', '').lower() # test = 'mynameisjhon'
data = []
for i in range(len(test) - length + 1):
data.append(test[i:i+length])
print(data)
输出:
['myname', 'ynamei', 'nameis', 'ameisj', 'meisjh', 'eisjho', 'isjhon']
如果您想要所有可能的字母组,无论长度如何:
test = 'My name is Jhon'
test = test.replace(' ', '').lower()
data = []
for i in range(len(test)):
for j in range(i + 1, len(test) + 1):
data.append(test[i:j])
print(data)
输出:
['m', 'my', 'myn', 'myna', 'mynam', 'myname', 'mynamei', 'mynameis', 'mynameisj', 'mynameisjh', 'mynameisjho', 'mynameisjhon', 'y', 'yn', 'yna', 'ynam', 'yname', 'ynamei', 'ynameis', 'ynameisj', 'ynameisjh', 'ynameisjho', 'ynameisjhon', 'n', 'na', 'nam', 'name', 'namei', 'nameis', 'nameisj', 'nameisjh', 'nameisjho', 'nameisjhon', 'a', 'am', 'ame', 'amei', 'ameis', 'ameisj', 'ameisjh', 'ameisjho', 'ameisjhon', 'm', 'me', 'mei', 'meis', 'meisj', 'meisjh', 'meisjho', 'meisjhon', 'e', 'ei', 'eis', 'eisj', 'eisjh', 'eisjho', 'eisjhon', 'i', 'is', 'isj', 'isjh', 'isjho', 'isjhon', 's', 'sj', 'sjh', 'sjho', 'sjhon', 'j', 'jh', 'jho', 'jhon', 'h', 'ho', 'hon', 'o', 'on', 'n']
您可以通过使用 .replace()
删除每个 space 来预处理字符串,然后使用 .lower()
.
将字符串小写
然后,要提取 six-character 个子字符串,您可以使用 zip()
和列表解包。这种方法可以更轻松地动态设置要提取的子字符串的长度。
data = 'My name is Jhon'
data = data.replace(' ', '').lower()
substring_length = 6
print(list(''.join(excerpt) for excerpt in zip(*[data[i:] for i in range(substring_length)])))
我对字符串中的字母分组有疑问。比如我想对一个句子进行分组:my name is Jhon 我想要这样的东西:myname ynamei nameis,等等...
我的代码是:
def letters(siq,data):
n=len(siq)
for i in range(data -1, n -6, 1):
yield siq[i:i+6]
test = 'My name is Jhon'
for i in range(1,4):
print(list(letters(test,i)))
我会这样做:
test = 'My name is Jhon'
length = 6
test = test.replace(' ', '').lower() # test = 'mynameisjhon'
data = []
for i in range(len(test) - length + 1):
data.append(test[i:i+length])
print(data)
输出:
['myname', 'ynamei', 'nameis', 'ameisj', 'meisjh', 'eisjho', 'isjhon']
如果您想要所有可能的字母组,无论长度如何:
test = 'My name is Jhon'
test = test.replace(' ', '').lower()
data = []
for i in range(len(test)):
for j in range(i + 1, len(test) + 1):
data.append(test[i:j])
print(data)
输出:
['m', 'my', 'myn', 'myna', 'mynam', 'myname', 'mynamei', 'mynameis', 'mynameisj', 'mynameisjh', 'mynameisjho', 'mynameisjhon', 'y', 'yn', 'yna', 'ynam', 'yname', 'ynamei', 'ynameis', 'ynameisj', 'ynameisjh', 'ynameisjho', 'ynameisjhon', 'n', 'na', 'nam', 'name', 'namei', 'nameis', 'nameisj', 'nameisjh', 'nameisjho', 'nameisjhon', 'a', 'am', 'ame', 'amei', 'ameis', 'ameisj', 'ameisjh', 'ameisjho', 'ameisjhon', 'm', 'me', 'mei', 'meis', 'meisj', 'meisjh', 'meisjho', 'meisjhon', 'e', 'ei', 'eis', 'eisj', 'eisjh', 'eisjho', 'eisjhon', 'i', 'is', 'isj', 'isjh', 'isjho', 'isjhon', 's', 'sj', 'sjh', 'sjho', 'sjhon', 'j', 'jh', 'jho', 'jhon', 'h', 'ho', 'hon', 'o', 'on', 'n']
您可以通过使用 .replace()
删除每个 space 来预处理字符串,然后使用 .lower()
.
然后,要提取 six-character 个子字符串,您可以使用 zip()
和列表解包。这种方法可以更轻松地动态设置要提取的子字符串的长度。
data = 'My name is Jhon'
data = data.replace(' ', '').lower()
substring_length = 6
print(list(''.join(excerpt) for excerpt in zip(*[data[i:] for i in range(substring_length)])))