Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python解析字符串_Python_String_Parsing - Fatal编程技术网

Python解析字符串

Python解析字符串,python,string,parsing,Python,String,Parsing,有人能帮我用Python写这个吗,我有一个字符串,看起来像这样: Comm IF Ver 1.18c Port TCP-1 >R5281H0000 >L0121 @g >E0042A1204C0000 >S@QT@L0121 @g >S0339E1512 > R5281H0000 L0121 @g E0042A1204C0000 S@QT@L0121 @g S0339E1512 我想从输出中得到一个如下所示的字符串: Comm IF Ve

有人能帮我用Python写这个吗,我有一个字符串,看起来像这样:

Comm IF Ver 1.18c Port  TCP-1
>R5281H0000
>L0121 @g
>E0042A1204C0000
>S@QT@L0121 @g
>S0339E1512
>
R5281H0000   L0121 @g   E0042A1204C0000   S@QT@L0121 @g   S0339E1512
我想从输出中得到一个如下所示的字符串:

Comm IF Ver 1.18c Port  TCP-1
>R5281H0000
>L0121 @g
>E0042A1204C0000
>S@QT@L0121 @g
>S0339E1512
>
R5281H0000   L0121 @g   E0042A1204C0000   S@QT@L0121 @g   S0339E1512

假设这是一个
字符串

a = " \
    Comm IF Ver 1.18c Port  TCP- \
    >R5281H0000 \
    >L0121 @g \
    >E0042A1204C0000 \
    >S@QT@L0121 @g \
    >S0339E1512 \
    >"
考虑使用
split
获得结果

b = a.split('>')[1:-1] #1 is to exclude the first one, -1 to exclude the last one
生成包含所需元素的列表

如果要将它们组合成带有一些空格的
字符串,请使用
join

c = " ".join(b) 
编辑分步说明:

什么是
split
,它根据分隔符将字符串“拆分”为
子字符串。在这种情况下,分隔符为
,因此它会更改一个长字符串:

a = " \
    Comm IF Ver 1.18c Port  TCP- \
    >R5281H0000 \
    >L0121 @g \
    >E0042A1204C0000 \
    >S@QT@L0121 @g \
    >S0339E1512 \
    >"
包含以下元素的字符串列表:

'Comm IF Ver 1.18c Port  TCP-' #element no 0
'R5281H0000' #no 1
'L0121 @g' #no 2
'E0042A1204C0000' #no 3
'S@QT@L0121 @g' #no 4
'S0339E1512' #no 5
'' #no 6
然后,当您使用切片索引
[1:-1]
时,您将切断第一个和最后一个元素:

'below is b

'R5281H0000' #no 0, previously 1
'L0121 @g' #no 1, previously 2
'E0042A1204C0000' #no 2, previously 3
'S@QT@L0121 @g' #no 3, previously 4
'S0339E1512' #no 4, previously 5
最后,
join
将把列表中的那些字符串重新组合成一个字符串,用空格分隔


假设这是一个
字符串

a = " \
    Comm IF Ver 1.18c Port  TCP- \
    >R5281H0000 \
    >L0121 @g \
    >E0042A1204C0000 \
    >S@QT@L0121 @g \
    >S0339E1512 \
    >"
考虑使用
split
获得结果

b = a.split('>')[1:-1] #1 is to exclude the first one, -1 to exclude the last one
生成包含所需元素的列表

如果要将它们组合成带有一些空格的
字符串,请使用
join

c = " ".join(b) 
编辑分步说明:

什么是
split
,它根据分隔符将字符串“拆分”为
子字符串。在这种情况下,分隔符为
,因此它会更改一个长字符串:

a = " \
    Comm IF Ver 1.18c Port  TCP- \
    >R5281H0000 \
    >L0121 @g \
    >E0042A1204C0000 \
    >S@QT@L0121 @g \
    >S0339E1512 \
    >"
包含以下元素的字符串列表:

'Comm IF Ver 1.18c Port  TCP-' #element no 0
'R5281H0000' #no 1
'L0121 @g' #no 2
'E0042A1204C0000' #no 3
'S@QT@L0121 @g' #no 4
'S0339E1512' #no 5
'' #no 6
然后,当您使用切片索引
[1:-1]
时,您将切断第一个和最后一个元素:

'below is b

'R5281H0000' #no 0, previously 1
'L0121 @g' #no 1, previously 2
'E0042A1204C0000' #no 2, previously 3
'S@QT@L0121 @g' #no 3, previously 4
'S0339E1512' #no 4, previously 5
最后,
join
将把列表中的那些字符串重新组合成一个字符串,用空格分隔


我收集的信息是,您希望将以
开头的每一行加上三个空格,但不包括
。以下是如何做到这一点:

print("   ".join(s.lstrip(">") for s in string if s.startswith(">")))

我收集的信息是,您希望将以
开头的每一行加上三个空格,但不包括
。以下是如何做到这一点:

print("   ".join(s.lstrip(">") for s in string if s.startswith(">")))


这是档案吗?或者一个有很多行的字符串?它是一个有6行的字符串,因此string.count('\n')给出了6的结果。这很奇怪,因为我看到了7行?对于有7行的字符串,可以使用6
\n
。最后一行没有
\n
:)看到了吗?这是一个文件吗?或者一个有很多行的字符串?它是一个有6行的字符串,因此string.count('\n')给出了6的结果。这很奇怪,因为我看到了7行?对于有7行的字符串,可以使用6
\n
。最后一行没有
\n
:)看到了吗?你能给我解释一下b=a.split('>')[1:-1]是如何工作的吗?它正在做我想做的,但只是想看看它是如何工作的?@Dominik解释道。希望它能让您更好地理解。:)我在每行的末尾还有新的行吗\r\n@Dominik如果您使用空格
加入
,那么您将不再拥有它。如果您使用
\r\n
加入
,则它将拥有它。这取决于你如何加入他们。在我的例子中,我
join`with
,因此新行消失了。为了摆脱新行
c=(“”*3)。join([s.strip()代表b中的s])
(很抱歉,
“”*3
,我不能在一个字符串中显示三个空格)。你能给我解释一下b=a.split(“>”)[1:-1]是如何工作的吗,多米尼克解释道:“它正在做我想做的事情,但我只是想看看它是如何做到的。”。希望它能让您更好地理解。:)我在每行的末尾还有新的行吗\r\n@Dominik如果您使用空格
加入
,那么您将不再拥有它。如果您使用
\r\n
加入
,则它将拥有它。这取决于你如何加入他们。在我的例子中,我
join`with
,因此新行不见了。为了去掉新行
c=(“”*3)。join([s.strip()代表b中的s])
(很抱歉,
“”*3
,我无法在一个字符串中显示三个空格)。