Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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 - Fatal编程技术网

从python字符串中删除大写字母

从python字符串中删除大写字母,python,string,Python,String,我试图弄清楚如何使用Python从字符串中删除大写字母,但不使用for循环 我尝试在使用while循环遍历列表时执行此操作 那么,如何删除所提供字符串中的大写字母呢?这里有几个选项: 1) 如果您只是想将所有大写字母转换为小写字母,那么.lower()是最简单的方法 s = 'ThiS iS A PyTHon StrinG witH SomE CAPitaL LettErs' import re print(re.sub(r'[A-Z]', '', s)) 给出: this is a py

我试图弄清楚如何使用Python从字符串中删除大写字母,但不使用
for
循环

我尝试在使用
while
循环遍历列表时执行此操作


那么,如何删除所提供字符串中的大写字母呢?

这里有几个选项:

1) 如果您只是想将所有大写字母转换为小写字母,那么
.lower()
是最简单的方法

s = 'ThiS iS A PyTHon StrinG witH SomE CAPitaL LettErs'
import re

print(re.sub(r'[A-Z]', '', s))
给出:

this is a python string with some capital letters
hi i  yon trin wit om ita ettrs
2) 如果您想完全删除它们,那么
re.sub()
是一种简单的方法

s = 'ThiS iS A PyTHon StrinG witH SomE CAPitaL LettErs'
import re

print(re.sub(r'[A-Z]', '', s))
给出:

this is a python string with some capital letters
hi i  yon trin wit om ita ettrs
(三)

对于字符串列表,可以使用列表理解:

#Option1
[i.lower() for i in s])

#Option2
import re

[re.sub(r'[A-Z]', '', i) for i in s])

#Option3 (as mentioned by @JohnColeman)
[''.join([j for j in i if not j.isupper()]) for i in s]

您在这里有几个选项:

1) 如果您只是想将所有大写字母转换为小写字母,那么
.lower()
是最简单的方法

s = 'ThiS iS A PyTHon StrinG witH SomE CAPitaL LettErs'
import re

print(re.sub(r'[A-Z]', '', s))
给出:

this is a python string with some capital letters
hi i  yon trin wit om ita ettrs
2) 如果您想完全删除它们,那么
re.sub()
是一种简单的方法

s = 'ThiS iS A PyTHon StrinG witH SomE CAPitaL LettErs'
import re

print(re.sub(r'[A-Z]', '', s))
给出:

this is a python string with some capital letters
hi i  yon trin wit om ita ettrs
(三)

对于字符串列表,可以使用列表理解:

#Option1
[i.lower() for i in s])

#Option2
import re

[re.sub(r'[A-Z]', '', i) for i in s])

#Option3 (as mentioned by @JohnColeman)
[''.join([j for j in i if not j.isupper()]) for i in s]

字符串是不可变的,所以不能从中删除字符,但可以创建一个跳过这些字符的新字符串

最简单的方法是:

s = ''.join(ch for ch in s if not ch.isupper())
如果出于某种原因(如分配要求),您想在不使用
的情况下执行此操作,我们可以将其作为显式循环写入,然后在
时将其转换为
。因此:

result = []
for ch in s:
    if not ch.isupper(): result.append(ch)
s = ''.join(result)
要更改循环,我们必须手动设置和下一个迭代器,但使用普通int作为索引而不是迭代器可能更容易理解:

result = []
i = 0
while i < len(s):
    ch = s[i]
    if not ch.isupper(): result.append(ch)
    i += 1
s = ''.join(result)

字符串是不可变的,所以不能从中删除字符,但可以创建一个跳过这些字符的新字符串

最简单的方法是:

s = ''.join(ch for ch in s if not ch.isupper())
如果出于某种原因(如分配要求),您想在不使用
的情况下执行此操作,我们可以将其作为显式循环写入,然后在
时将其转换为
。因此:

result = []
for ch in s:
    if not ch.isupper(): result.append(ch)
s = ''.join(result)
要更改循环,我们必须手动设置和下一个迭代器,但使用普通int作为索引而不是迭代器可能更容易理解:

result = []
i = 0
while i < len(s):
    ch = s[i]
    if not ch.isupper(): result.append(ch)
    i += 1
s = ''.join(result)


删除,如从字符串中完全删除或用小写字母替换?为什么使用while循环?完全删除您可以将任何for循环转换为while循环,只需手动创建一个迭代器并在每次循环时连接它,或者手动创建一个int进行索引并在每次循环中递增1即可。我不知道你为什么要这样做,但如果出于某种原因,你的要求是“使用while循环”,那么这就是满足该要求的显而易见的方法。为什么不使用像
['''.join(如果不是c.isupper(),则c代表s中的c)这样的理解方式来表示字符串中的s]
?即使不能使用列表理解,该理解中的表达式也显示了从字符串中删除大写字母的一种方法。删除,如中所述,将其从字符串中完全删除或用小写字母替换?为什么要使用while循环?完全删除您可以将任何for循环转换为while循环,只需手动创建一个迭代器并在每次循环时连接它,或手动创建一个int进行索引,并通过循环每次将其递增1。我不知道你为什么要这样做,但如果出于某种原因,你的要求是“使用while循环”,那么这就是满足该要求的显而易见的方法。为什么不使用像
['''.join(如果不是c.isupper(),则c代表s中的c)这样的理解方式来表示字符串中的s]
?即使不能使用列表理解,该理解中的表达式也显示了从字符串中删除大写字母的一种方法。有没有办法通过切片或连接字符串来实现这一点?我不允许使用上面提供的命令检查John Coleman comment/answer,那么我认为一个还没有学习for循环的学生除了第一个之外,将无法理解其中的任何一个,但是展示它们并可能使它们(或其他有相同问题的学生)理解它们是非常酷的好奇到可以学到比课堂教学大纲更多的东西。特别是对于一个已经在问“难道没有更好的方法吗?”并试图找出答案的学生来说。有没有一种方法可以通过切割或连接绳子来做到这一点?我不允许使用上面提供的命令检查John Coleman comment/answer,那么我认为一个还没有学习for循环的学生除了第一个之外,将无法理解其中的任何一个,但是展示它们并可能使它们(或其他有相同问题的学生)理解它们是非常酷的好奇到可以学到比课堂教学大纲更多的东西。特别是对于一个已经在问“有没有更好的方法?”并试图找出答案的学生来说。更像是OP老师奇怪的要求……;)@uwain12345嗯,是的,我想OP唯一真正的要求是“我想满足老师奇怪的要求,所以我通过了作业”。但我认为值得指出的是,为什么在这个赋值之外,你实际上会想在这里使用
。我会写
s=''.join([ch for ch in s if notch.isupper()])
s='.join(filter(str.isupper,s))
。两者都比传递到
str.join
的gencomp快。顺便说一句,你的文章中引用的话真的很奇怪。没有办法通过拆分/加入/切片来做到这一点吗?@Jean-Françoisfare是的,将迭代器传递给str.join意味着它只是在CPython中列出它们。但这只是一个很小的持续性能差异,不太可能有什么关系。另外,为it进行优化依赖于了解一种特定语言实现的内部结构(或者至少测试它)。如果不相关,就写一个最清楚的。我认为在这里使用genexpr更清楚,因为就行为而言,我们不在乎我们在构建什么样的iterable;如果我们使用[],我们是在暗示表演在这里很重要。更像是OP老师的奇怪要求