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

Python 无法删除特殊字符;:??/&书信电报;

Python 无法删除特殊字符;:??/&书信电报;,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在加载带有逗号分隔值的csv文件。Buit Tax_Amount列具有特殊字符,它将替换这些值。 如何解决这个问题? 我尝试了下面的代码。但不起作用。 税款金额价值=45000000001 SN 40HX750 SEPT17股票“;:??/bad_chars=[“;”,“:”,“?”,“您可以使用正则表达式从字符串中删除任何字符或模式。此处需要删除的字符放在“[]”之间: import re str1 = "SN45000000001 40HX750_SEPT17 STOCK'';:??/?

我正在加载带有逗号分隔值的csv文件。Buit Tax_Amount列具有特殊字符,它将替换这些值。 如何解决这个问题? 我尝试了下面的代码。但不起作用。
税款金额价值=45000000001 SN 40HX750 SEPT17股票“;:??/
bad_chars=[“;”,“:”,“?”,“您可以使用正则表达式从字符串中删除任何字符或模式。此处需要删除的字符放在“[]”之间:

import re
str1 = "SN45000000001 40HX750_SEPT17 STOCK'';:??/?<."
str1 = re.sub('[;:/?<.\'"]', '', str1)
print(str1)

您必须将
bad_chars
列为单独的字符:

bad_chars = [';',':','?','/','<','.'] 
test_string = 'N45000000001 40HX750_SEPT17 STOCK'';:??/?<.'
test_string = list(filter(lambda i: i not in bad_chars, test_string))
print(test_string) 

bad_chars=[';'、':'、'?'、'/'、'Pandas str允许您替换不需要的字符。下面是一个如何仅使用Pandas来解决此问题的示例

import pandas as pd

df = pd.DataFrame({'Tax_Amount': ['SN45000000001 40HX750_SEPT17 STOCK'';:??/?<.']})

pattern = '[:;\?\.<\'/]' # I use \ to ignore characters that are used in regex :)

df['Tax_Amount_Clean'] = df['Tax_Amount'].str.replace(pattern, '').str.strip()

print(df)
将熊猫作为pd导入

df=pd.DataFrame({'Tax_Amount':['SN45000000001 40HX750_SEPT17 STOCK';:??/?这看起来您不知道
[…]
实际上是这样。character类匹配任何单个字符,这些字符是类中枚举的字符之一。显然,没有必要多次指定任何字符。这将在任何地方替换这些字符,而不仅仅是在这个上下文中(我猜这是OP想要的,可能不是您相信的)。还有,你为什么要将
添加到类中(两次)?@对不起,那是"写错了两次你仍然有三次
?/?
真的是文字吗,或者你的代码中的某些东西是如何表示一些无法打印的mojibake的?为什么以及如何首先添加这些垃圾?有没有办法避免在上游某个地方出现这种情况?你的一些注释尝试看起来几乎正确,但是很明显,这是一些不太灵巧的阅读文档的结果。
import re
str1 = "SN45000000001 40HX750_SEPT17 STOCK'';:??/?<."
str1 = re.sub('[;:/?<.\'"]', '', str1)
print(str1)
SN45000000001 40HX750_SEPT17 STOCK
bad_chars = [';',':','?','/','<','.'] 
test_string = 'N45000000001 40HX750_SEPT17 STOCK'';:??/?<.'
test_string = list(filter(lambda i: i not in bad_chars, test_string))
print(test_string) 
import pandas as pd

df = pd.DataFrame({'Tax_Amount': ['SN45000000001 40HX750_SEPT17 STOCK'';:??/?<.']})

pattern = '[:;\?\.<\'/]' # I use \ to ignore characters that are used in regex :)

df['Tax_Amount_Clean'] = df['Tax_Amount'].str.replace(pattern, '').str.strip()

print(df)