import re
foo='''"a","b","c","aaa":"sdlfjlasjdfljas"'''
list=re.split('\:,\';\"',foo)
i = 0
for word in list:
newWord = word
newWord.split(':')
我目前正试图将字符串foo与逗号,冒号和括号等不同的参数分开......等等。
我目前能够将字符串拆分一次,它在一个索引中提供字符串"aaa":"alsjflajlsdjf"
。我希望能够通过冒号将其拆分,并在if语句中使用aaa
查找word.find
以获取下一个字符串并将其打印出来。所以它会打印出胡言乱语。
我已成功使用for循环查找aaa
部分,但我无法打印出乱码。感谢您的帮助。
答案 0 :(得分:2)
您可以根据无字字符(\W
)简单地拆分字符串:
>>> foo='''"a","b","c","aaa":"sdlfjlasjdfljas"'''
>>>
>>> re.split(r'\W',foo)
['', 'a', '', '', 'b', '', '', 'c', '', '', 'aaa', '', '', 'sdlfjlasjdfljas', '']
或者,对于拒绝空字符串,您可以使用re.findall
查找仅包含字词字符的字词(\w
):
>>> l=re.findall(r'\w+',foo)
['a', 'b', 'c', 'aaa', 'sdlfjlasjdfljas']
您可以使用next
函数中的生成器表达式来获取长度不止一个的第一个单词:
>>> next(w for w in l if len(w)>1)
'aaa'
或者使用列表理解来获取所有这些:
>>> [w for w in l if len(w)>1]
['aaa', 'sdlfjlasjdfljas']
注意:如果要使用正则表达式拆分包含某些字符的字符串,可以使用以下配方:
[:,.;]
':|,|\.|;'
但是使用带有re.split
的pip(' |')可能包含空字符串。在这种情况下,您可以使用字符类。
答案 1 :(得分:1)
你的正则表达式应该是这样的:
[,;:]
方括号包括您要拆分的所有字符。
答案 2 :(得分:1)
您可以使用str.translate
替换要用逗号拆分的任何字符,然后用逗号分隔:
tbl= str.maketrans({ord(ch):"," for ch in "();:"})
print("\n".join(foo.translate(tbl).split(",")))
"a"
"b"
"c"
"aaa"
"sdlfjlasjdfljas"
我不明白为什么你要分割所有的单词,如果你想要的只是aaa
之后的单词,str.find如果你拆分字符串不会对你有多大帮助,你可以拆分在使用find获取aaa
的索引后,从那里得到下一个单词。
ind = foo.index("aaa")
if ind != -1:
....