如何在python 3中用回车符分隔字符串

时间:2019-04-06 20:03:29

标签: python-3.x string

我在python 3中有一些字符串要解析,下面是一些示例:

str1 = 'JohnDoe\n  \n(1357)\n\n\n\n\n    SteveH\n  \n(1387)'
str2 = 'Phisher\r\n  \n(1029)\n\n\n\n\n\r\n    Alex201807\r\n  \n(1053)'

我需要一种简单的方法来检索:

JohnDoe 1357 SteveH 1387 from str1
Phisher 1029 Alex201807 1053 from str2

我的python经验有限,任何人都可以启发?谢谢。

3 个答案:

答案 0 :(得分:0)

您可以使用re.sub将所有空白字符替换为空格

>>> import re
>>> str1 = 'JohnDoe\n  \n(1357)\n\n\n\n\n    SteveH\n  \n(1387)'
>>> re.sub(r'\s+', ' ', str1)
'JohnDoe (1357) SteveH (1387)'
>>> str2 = 'Phisher\r\n  \n(1029)\n\n\n\n\n\r\n    Alex201807\r\n  \n(1053)'
>>> re.sub(r'\s+', ' ', str2)
'Phisher (1029) Alex201807 (1053)'

如果要删除括号,请再次执行

答案 1 :(得分:0)

str1=' '.join(str1.split())

说明:

>>> str1 = 'JohnDoe\n  \n(1357)\n\n\n\n\n    SteveH\n  \n(1387)'
>>> str1.split()
['JohnDoe', '(1357)', 'SteveH', '(1387)']
>>> ' '.join(str1.split())
'JohnDoe (1357) SteveH (1387)'
>>> ' '.join(str1.split()).replace('(','').replace(')','')
'JohnDoe 1357 SteveH 1387'

答案 2 :(得分:0)

这应该有助于您同时获得预期的字符串和数字

import re
str1 = 'JohnDoe\n  \n(1357)\n\n\n\n\n    SteveH\n  \n(1387)'
str2 = 'Phisher\r\n  \n(1029)\n\n\n\n\n\r\n    Alex201807\r\n  \n(1053)'

def parse_string(text):
    #Replace \r, \n, ( and )
    for char in ['\r','\n','(',')']:
        text = text.replace(char,"")
    #Replace multiple whitespaces with one
    text = re.sub('\s+', ' ', text).strip()
    return text

def get_num_from_string(text):
    p = re.compile(r'\d+.\d+')  # Compile a pattern to capture int values
    nums = [int(i) for i in p.findall(text)]  # Convert strings to int
    return nums
#JohnDoe 1357 SteveH 1387
#[1357, 1387]
#Phisher 1029 Alex201807 1053
#[1029, 201807, 1053]