在Python中一定数量的字符出现多于一次之后,如何修剪字符串?

时间:2019-01-15 17:22:53

标签: python

我正在尝试扫描一个字符串,并且每次读取某个字符3次时,我都希望剪切剩余的字符串

例如: 字符串“ C:\ Temp \ Test \ Documents \ Test.doc”将变成“ C:\ Temp \ Test \”

每当字符串击中“ \” 3次时,都应修剪字符串

这是我正在处理的代码

(
SELECT 
JCDS_SOGR.OBJNR, JCDS_SOGR.STAT, TJ02T.TXT30, DATEDIFF(DAY,MIN(JCDS_SOGR.UDATE),MAX(JCDS_SOGR.UDATE))
AS DIF
FROM JCDS_SOGR
JOIN TJ02T ON JCDS_SOGR.STAT = TJ02T.ISTAT
WHERE JCDS_SOGR.OBJNR = 'IE000000000010003791'
AND TJ02T.SPRAS = 'E'
GROUP BY JCDS_SOGR.OBJNR,JCDS_SOGR.STAT,TJ02T.TXT30) 

UNION ALL

(
SELECT JCDS_SOGR.OBJNR, JCDS_SOGR.STAT, TJ30T.TXT30, DATEDIFF(DAY,MIN(JCDS_SOGR.UDATE),MAX(JCDS_SOGR.UDATE))
AS DIF
FROM JCDS_SOGR
JOIN TJ30T ON JCDS_SOGR.STAT = TJ30T.ESTAT
WHERE JCDS_SOGR.OBJNR = 'IE000000000010003791'
AND TJ30T.SPRAS = 'E'
AND TJ30T.MANDT='400'
AND TJ30T.STSMA = 'VEHICLE'
GROUP BY JCDS_SOGR.OBJNR,JCDS_SOGR.STAT,TJ30T.TXT30)

OBJNR STAT TXT30 DIF 1 3791 I1099 Available 0 2 3791 E0002 Awaiting Acceptance 110 3 3791 E0004 Operational 1473 4 3791 E0019 Operational Back-order 0 是带有文件路径的字符串。 “前缀”变量是我要存储修剪后的字符串的字符串数组。

请让我知道我需要解决的问题,或者是否有更简单的方法来执行此操作。

4 个答案:

答案 0 :(得分:2)

执行split,然后切片列表以获取必需项和join

s = 'C:\Temp\Test\Documents\Test.doc'

print('\\'.join(s.split('\\')[:3]) + '\\')
# C:\Temp\Test\

请注意,\(反斜杠)是转义字符。要专门表示反斜杠,可以通过在反斜杠\\之前添加反斜杠来使其强制为反斜杠,从而消除反斜杠的特殊含义。

答案 1 :(得分:1)

在python中,反斜杠字符用作转义字符。如果您执行\ n,则执行换行,\ t进行制表符。还有许多其他事情,例如\“允许您在字符串中加引号。如果要使用常规反斜杠,则应使用” \\“

答案 2 :(得分:0)

尝试

s = "C:\\Temp\\Test\\Documents\\Test.doc"
answer = '\\'.join(s.split('\\', 3)[:3])

答案 3 :(得分:0)

类似的事情会做..

x = "C:\Temp\Test\Documents\Test.doc"
print('\\'.join(x.split("\\")[:3])+"\\")