我有以下字符串:
word = u'Buffalo,\xa0IL\xa060625'
我不希望那里有“\ xa0”。我怎么能摆脱它?我想要的字符串是:
word = 'Buffalo, IL 06025
答案 0 :(得分:11)
最强大的方法是使用unidecode
module自动将所有非ASCII字符转换为最接近的ASCII等效字符。
字符\xa0
(不是\xa
如你所说)是NO-BREAK SPACE,最接近的ASCII等价物当然是常规空格。
import unidecode
word = unidecode.unidecode(word)
答案 1 :(得分:3)
如果你确定这是你不想要的唯一角色,你可以.replace
:
>>> word.replace(u'\xa0', ' ')
u'Buffalo, IL 60625'
如果你需要处理所有非ascii字符,编码和替换坏字符可能是一个好的开始......:
>>> word.encode('ascii', 'replace')
'Buffalo,?IL?60625'
答案 2 :(得分:2)
那里没有\xa
。如果您尝试将其放入字符串文字中,那么如果您很幸运,您将会遇到语法错误,或者如果您感兴趣,它将会吞下下一个尝试过的字符不是,因为\x
序列后面必须跟两个十六进制数字。
你拥有的是\xa0
,这是角色U+00A0的转义序列,又名" NO-BREAK SPACE"。
我认为你想用空格替换它们,但无论你想做什么都很容易写:
word.replace(u'\xa0', u' ') # replaced with space
word.replace(u'\xa0', u'0') # closest to what you were literally asking for
word.replace(u'\xa0', u'') # removed completely
答案 3 :(得分:1)
您可以轻松使用void Main()
{
var json = File.ReadAllText(@"c:\temp\json.txt"); // your json
var output = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Target>>(json);
}
public class Target
{
[Newtonsoft.Json.JsonProperty("id")]
public int Id { get; set; }
[Newtonsoft.Json.JsonProperty("name")]
public string Name { get; set; }
[Newtonsoft.Json.JsonProperty("exchangeable")]
public bool Exchangeable { get; set; }
[Newtonsoft.Json.JsonProperty("members")]
public bool Members { get; set; }
[Newtonsoft.Json.JsonProperty("placeholder_id")]
public int PlaceholderId { get; set; }
[Newtonsoft.Json.JsonProperty("noted_id")]
public int? NotedId { get; set; }
}
删除所有unicodedata
个字符。
\x...
答案 4 :(得分:0)
这似乎可以解决非ascii字符:
fixedword = word.encode('ascii','ignore')