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

Python 用空格替换字符串中的字符

Python 用空格替换字符串中的字符,python,string,replace,translate,Python,String,Replace,Translate,我正在编写一个简单的Python脚本,用于检索任何twitter用户(在本例中为BBC)的最新推文,并使用Mac上的集成文本到语音系统来读取特定推文的内容 一切都在正常运行,但有些事情我想改进。例如,如果一条tweet包含字符“#”,计算机会将其称为“数字”。例如,如果tweet的内容是“BBC报道最新新闻”,那么计算机会说“BBC报道最新新闻的数量” 我声明了一个字符串来保存tweet的内容,并希望找到一种用空格替换不需要的字符的方法。到目前为止,我有以下几点: for char in dat

我正在编写一个简单的Python脚本,用于检索任何twitter用户(在本例中为BBC)的最新推文,并使用Mac上的集成文本到语音系统来读取特定推文的内容

一切都在正常运行,但有些事情我想改进。例如,如果一条tweet包含字符“#”,计算机会将其称为“数字”。例如,如果tweet的内容是“BBC报道最新新闻”,那么计算机会说“BBC报道最新新闻的数量”

我声明了一个字符串来保存tweet的内容,并希望找到一种用空格替换不需要的字符的方法。到目前为止,我有以下几点:

for char in data_content: #data_content is the string holding the tweet
    if char in "#&/": # does not replace #
        mod_data = data_content.replace(char, '')
print(mod_data)
system('say ' + mod_data)
这似乎可以正确使用“/”字符,但不能替换“#”字符。因此,在这件事上的任何帮助都是非常感谢的

另外,我已经尝试单独替换“#”字符,在这种情况下,我得到了期望的结果。但是,当我尝试提供一系列要替换的字符时,它只替换“/”字符


谢谢

您的循环总是将数据内容转换为mod_数据,因此您总是只能看到最后一次更改

假设您的字符串是
“#BBC报道了G&F的最新问题。请参阅BBC.co.uk/gf”

第一次在列表中找到字符是
,因此:

mod_data=“BBC报道了G&F的最新问题。请参见BBC.co.uk/gf”

接下来会找到
&
,但它会在数据内容中找到,因此您之前所做的更改将被忽略,您将获得:

mod#u data=“#BBC报道了GF的最新版本。请参阅BBC.co.uk/GF”

当找到
/
时也会发生同样的情况,您会得到:

mod#u data=“#BBC报道了G&F的最新问题。请参见BBC.co.ukgf”

这就是为什么它看起来只适用于
/

您可以简单地使用以下正则表达式执行所需操作:

import re

string = "#BBC covers the latest issues with G&F. See bbc.co.uk/gf"
mod_data = re.sub(r"[#&/]", " ", string)
print(mod_data)
system('say ' + mod_data)

我还有一个建议。由于
replace()
适用于字符串中所有出现的字符,因此不需要外部循环,因此可以将代码更改为如下内容:

import re

string = "#BBC covers the latest issues with G&F. See bbc.co.uk/gf"
mod_data = re.sub(r"[#&/]", " ", string)
print(mod_data)
system('say ' + mod_data)
mod_data=数据内容
对于“#&/”中的字符:
mod_data=mod_data.replace(字符“”)

Aaaa,这很有道理。谢谢你指出这一点!现在很有魅力。干杯