说我有一个字符串,string = 'a'
我做string.split()
,我得到['a']
我不想要这个,我只想在字符串ala string = 'a b c d'
中有空格时使用一个列表
到目前为止,我已经尝试了以下所有方法,但是没有运气:
>>> a = 'a'
>>> a.split()
['a']
>>> a = 'a b'
>>> a.split(' ')
['a', 'b']
>>> a = 'a'
>>> a.split(' ')
['a']
>>> import re
>>> re.findall(r'\S+', a)
['a']
>>> re.findall(r'\S', a)
['a']
>>> re.findall(r'\S+', a)
['a', 'b']
>>> re.split(r'\s+', a)
['a', 'b']
>>> a = 'a'
>>> re.split(r'\s+', a)
['a']
>>> a.split(" ")
['a']
>>> a = "a"
>>> a.split(" ")
['a']
>>> a.strip().split(" ")
['a']
>>> a = "a".strip()
>>> a.split(" ")
['a']
我疯了吗?我在字符串“ a”中看不到空格。
>>> r"[^\S\n\t]+"
'[^\\S\\n\\t]+'
>>> print(re.findall(r'[^\S\n\t]+',a))
[]
怎么了?
EDIT
FWIW,这就是我所需要的东西:
# test for linked array
if typename == 'org.apache.ctakes.typesystem.type.textsem.ProcedureMention':
for f in AnnotationType.all_features:
if 'Array' in f.rangeTypeName:
if attributes.get(f.name) and typesystem.get_type(f.elementType):
print([ int(i) for i in attributes[f.name].split() ])
到此结束...
答案 0 :(得分:2)
拆分将始终返回列表,请尝试此操作。
def split_it(s):
if len(s.split()) > 1:
return s.split()
else:
return s
答案 1 :(得分:1)
split
的行为很有意义,它总是返回一个列表。为什么不只检查列表长度是否为1?
def weird_split(a):
words = a.split()
if len(words) == 1:
return words[0]
return words
答案 2 :(得分:0)
您可以使用条件表达式来检查是否存在空格,并且仅在检测到空格时才使用split
:
str1 = 'abc'
split_str1 = str1 if (' ' not in str1) else str1.split(' ')
print (split_str1)
str1 = 'ab c'
split_str1 = str1 if (' ' not in str1) else str1.split(' ')
print (split_str1)
这将给出输出:
abc
['ab', 'c']