连接文本中的单个字符
Concatenate the single characters in texts
我有一个包含公司名称的列表,其中一些有缩写。例如:
compNames = ['Costa Limited', 'D B M LTD']
我需要使用以下方法将文本的 compNames 转换为标记计数矩阵。但这不会在 D B M LTD
中输出 B D M
的列
count_vect = CountVectorizer(analyzer='word')
count_vect.fit_transform(compNames).toarray()
连接文本中单个字符的最佳方法是什么?
ex: 'D B M LTD' to 'DBM LTD'
import re
string = 'D B M LTD'
print re.sub("([^ ]) ", r"", re.sub(" ([^ ]{2,})", r" ", string))
笨拙,但应该可以。它在LTD前面引入了一个额外的space,然后将"D "替换为"D",将"B "替换为"B"等等。
这是一个简短的函数,它将白色 space 字符的字符串分解为列表,迭代列表,如果元素的长度为 1,则构建临时字符串,将临时字符串附加到新列表当遇到长度大于1的元素时。
import re
a = 'D B M LTD'
def single_concat(s):
out = []
tmp = ''
for x in re.split(r'\s+', s):
if len(x) == 1:
tmp += x
else:
if tmp:
out.append(tmp)
out.append(x)
tmp = ''
return ' '.join(out)
single_concat(a)
# returns:
'DBM LTD'
import re
s = "D B M LTD"
first_part = ''
for chunk in re.compile("([A-Z]{1})\s").split(s):
if len(chunk) == 1:
first_part += chunk
elif len(chunk) > 1:
last_part = chunk
print(first_part + " " + last_part)
打印 DBM LTD
.
import re
string = 'D B M LTD'
print re.sub(r"\+", r"", re.sub(r"\+(\w\B)", r" ", re.sub(r"(\b\w) ", r"+", string)))
我临时使用 + 字符,假设字符串中没有 + 字符。如果有,使用其他没有出现的。
看,没有re
:
def mingle(s):
""" SO: 49692941 """
l = s.split()
r = []
t = []
for e in l:
if len(e) == 1:
t.append(e)
else:
j = "".join(t)
r.append( j )
r.append( e )
t = []
return " ".join(r)
print( mingle('D B M LTD') )
打印
DBM LTD
我有一个包含公司名称的列表,其中一些有缩写。例如:
compNames = ['Costa Limited', 'D B M LTD']
我需要使用以下方法将文本的 compNames 转换为标记计数矩阵。但这不会在 D B M LTD
B D M
的列
count_vect = CountVectorizer(analyzer='word')
count_vect.fit_transform(compNames).toarray()
连接文本中单个字符的最佳方法是什么?
ex: 'D B M LTD' to 'DBM LTD'
import re
string = 'D B M LTD'
print re.sub("([^ ]) ", r"", re.sub(" ([^ ]{2,})", r" ", string))
笨拙,但应该可以。它在LTD前面引入了一个额外的space,然后将"D "替换为"D",将"B "替换为"B"等等。
这是一个简短的函数,它将白色 space 字符的字符串分解为列表,迭代列表,如果元素的长度为 1,则构建临时字符串,将临时字符串附加到新列表当遇到长度大于1的元素时。
import re
a = 'D B M LTD'
def single_concat(s):
out = []
tmp = ''
for x in re.split(r'\s+', s):
if len(x) == 1:
tmp += x
else:
if tmp:
out.append(tmp)
out.append(x)
tmp = ''
return ' '.join(out)
single_concat(a)
# returns:
'DBM LTD'
import re
s = "D B M LTD"
first_part = ''
for chunk in re.compile("([A-Z]{1})\s").split(s):
if len(chunk) == 1:
first_part += chunk
elif len(chunk) > 1:
last_part = chunk
print(first_part + " " + last_part)
打印 DBM LTD
.
import re
string = 'D B M LTD'
print re.sub(r"\+", r"", re.sub(r"\+(\w\B)", r" ", re.sub(r"(\b\w) ", r"+", string)))
我临时使用 + 字符,假设字符串中没有 + 字符。如果有,使用其他没有出现的。
看,没有re
:
def mingle(s):
""" SO: 49692941 """
l = s.split()
r = []
t = []
for e in l:
if len(e) == 1:
t.append(e)
else:
j = "".join(t)
r.append( j )
r.append( e )
t = []
return " ".join(r)
print( mingle('D B M LTD') )
打印
DBM LTD