Python解析字符串
有人能帮我用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
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
,我无法在一个字符串中显示三个空格)。