我有以下字符串:
a = "this.is.a.string"
我希望删除第3个'之后的所有内容。'符号,以便它返回
trim(a)
>>> "this.is.a"
而没有第3个字符串的字符串。'应该归还。
这个答案(How to remove all characters after a specific character in python?)是我能找到的最接近的解决方案,但我不认为split
这次会帮助我。
答案 0 :(得分:10)
dot
然后.split()
>>> ".".join(a.split(".")[:3])
'this.is.a'
您也可以指定maxsplit
参数,因为您只需要3"切片":
如果给出
maxsplit
,则最多maxsplit
次分割已完成(因此,该列表最多只有maxsplit+1
个元素。)
>>> ".".join(a.split(".", 3)[:-1])
'this.is.a'
答案 1 :(得分:2)
@alecxe 的答案就足够了,但是,你问
在第n次出现后删除其余的字符串
要做到这一点,你可以做到
def removeAfterN(yourStr, nth, occurenceOf):
return occurenceOf.join(yourStr.split(occurenceOf)[:nth])
yourStr
是您的字符串,nth
是出现的位置(在您的示例中,它是3
),而occurenceOf
是.
来自>>> removeAfterN("this.is.a.string",3,".")
'this.is.a'
你的榜样。
public class CourseGradePrinter {
public static void main(String[] args) {
final int NUM_VALS = 4;
int[] courseGrades = new int[NUM_VALS];
int i = 0;
courseGrades[0] = 7;
courseGrades[1] = 9;
courseGrades[2] = 11;
courseGrades[3] = 10;
for (i = 0; i < NUM_VALS; i++) {
System.out.print(courseGrades[i] + " ");
}
for (i = NUM_VALS - 1; i > NUM_VALS; --i) {
System.out.print(courseGrades[i] + " ");
}
return;
}
}
答案 2 :(得分:1)
你可以在这里使用简单的正则表达式和sub:
import re
print re.sub(r'\.a.*$', '.a', a)
\.a
表示符号.a
.*$
意味着一切直到最后
或简单replace:
a.replace('.string','')
使用re
的更常见解决方案可能是:
print re.sub(r'(^[a-z]+\.[a-z]+)\..*$', '\g<1>', a)
我们正在使用.
对每个部分进行分组并对第三部分进行分组。
[a-z]+
- 表示不止一个字母
\..*$
表示从第二个.
到结尾
\g<1>
表示对第一组()
有关正则表达式语法的更详细说明,您可以找到here
答案 3 :(得分:-1)
def trim(s):
count = 0
for i in range(len(s)):
if s[i] == '.'
if count == 2
s = s[:i]
break
count += 1